题目链接
这道题目真的堪称水题了。。。但是往往就是这种水题让人纠结很久。
首先重要的一点是要理解题目,题目并不是要你输出一个元素一共有多少个而是联系的有多少个。比如说:AABBBCAAA 你要输出的是2A3BC3A 而不是5A3BC。
这道题目比较笨的方法是开两个CHAR数组,然后用另外一个存储符合条件的数组。可是,我这样做的话,不知道为什么一直WA实在不知道错在哪。看网上有些前辈们也说这题用那样的方法做过不了。总之那样做的代码先贴出来。
#include <iostream> #include <cstring> using namespace std; char a[10010]; char b[10010]; int main() { int T,n,len,k,count; cin>>T; while(T--) { cin>>a; k=0; len=strlen(a); for(int i=0;i<len;i++) { count=1; while(a[i]==a[i+1]) { count++; i++; } if(count!=1) b[k++]=count+'0'; b[k++]=a[i]; } b[k]='\0'; cout<<b<<endl; } return 0; }
由于这道题目,只是要求我们求出连续的个数,所以一个数组或是STRING即可。这也是看到网上其他大神的思路才知道的。这说明我在这方面惯性思维还是太严重了,还得好好加强。贴出代码:
#include <iostream> #include <string> using namespace std; int main() { string a; char b; int t,count; cin>>t; while(t--) { cin>>a; b=a[0]; count=1; for(int i=1;i<=a.size();i++) { if(b==a[i]) count++; else { if(count==1) cout<<b; else cout<<count<<b; b=a[i]; count=1; } } cout<<endl; } return 0; }