题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1020
自己的代码:
#include<iostream> #include<string> using namespace std; int T; string s; int main() { cin>>T; while(T--) { cin>>s; int len = s.length(); int sum=1; for(int i=0;i<len;i++) { if(s[i]==s[i+1]) sum++; if(s[i]!=s[i+1]) { if(sum==1) cout<<s[i]; if(sum>1) { cout<<sum<<s[i]; sum=1; } } } cout<<endl; } return 0; }
看了一下别人的代码,也挺清晰的
参考下:
#include<iostream> #include <string> using namespace std; void doProcess(string& str) { int count,i,j; for (i=0;i<str.length();) { count = 1; for (j=i+1;j<str.length();++j) { if (str[i]==str[j]) {//记录相同的字符个数 count++; } else break; } if (count>1) { cout<<count<<str[i]; } else { cout<<str[i]; } i = j;//更新起始位置 } cout<<endl; } int main() { int caseNum,i; string strTmp; while (cin>>caseNum) { for (i=0;i<caseNum;++i) { cin>>strTmp; doProcess(strTmp); } } return 0; }
时间: 2024-11-05 08:25:05