NYOJ-+-字符串
2016-07-20 16:03
274 查看
+-字符串
时间限制:1000 ms | 内存限制:65535 KB
难度:1
描述
Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题。
输入
多组测试数据
每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。
输出
仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。
样例输入
++-+–+
-++–++
样例输出
4
AC
时间限制:1000 ms | 内存限制:65535 KB
难度:1
描述
Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题。
输入
多组测试数据
每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。
输出
仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。
样例输入
++-+–+
-++–++
样例输出
4
AC
#include <stdio.h> #include <string.h> char s1[5000],s2[5000]; int main() { while(~scanf("%s\n%s",s1,s2)) { int len,a=0,b=0,i; len=strlen(s1); for(i=0;i<len;i++) { if(s1[i]=='+') a++; if(s2[i]=='+') b++; } if(a!=b){printf("-1\n");continue;} else { int count=0; for(i=0;i<len;i++) { if(s1[i]!=s2[i]) { for(int j=i+1;j<len;j++)//不一样时往后找 { count++;//后找计数 if(s1[j]==s2[i]) {s1[j]=s1[i];break;} } } } printf("%d\n",count); } } return 0; }
相关文章推荐
- Vim基本操作
- 按照指定长度切割字符串
- HDOJ--5053--the Sum of Cube
- 学习笔记- AVFoundation Programming Guide - Using Assets
- 剑指offer——数组中重复的数字
- ScrollView 里嵌套WebView,WebView不能上下滑动或卡顿
- 使用MongoDB.NET 2.2.4驱动版本对 Mongodb3.3数据库中GridFS增删改查
- std::max
- 利用win7操作系统粘滞键漏洞更改Windows管理员密码
- Jenkins + Xcode + Fir.im 自动构建项目,并打包ipa上传(MAC)
- PreferenceScreen修改背景颜色
- Leetcode题解 268. Missing Number
- AngularJS
- 一些Editor整理(为自己)
- hdoj4548美素数
- 电商平台如何接入智选物流平台?
- atlas管理命令介绍
- muduo : StringPiece
- Centos7.0安装redis
- Android高效加载大图、多图解决方案,有效避免程序OOM