题目传送门:https://www.patest.cn/contest...
样例都通过了,实在是找不到问题出在哪里哭唧唧
代码如下:
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main(){
char c,t;
cin>>c;
getchar();
string s,ans;
getline(cin,s);
int cnt;
if(c=='C'){
cnt=1;
for(int i=0;i<s.length();i++){
if(s[i]==s[i+1]){
cnt++;
}else{
if(cnt!=1){
ans+=(char)(cnt+'0');
cnt=1;
}
ans+=s[i];
}
}
}else if(c=='D'){
cnt=0;
for(int i=0;i<s.length();i++){
if(isdigit(s[i])){
cnt=cnt*10+(s[i]-'0');
}else{
if(cnt!=0){
for(int j=0;j<cnt;j++){
cout<<s[i];
}
}else{
cout<<s[i];
}
cnt=0;
}
}
}
cout<<ans;
return 0;
}
大概看了一下,发现了几处错误,在压缩部分:
i<s.length
但里面却去取s[i+1]
ans+=(char)(cnt+'0');
这句在cnt>9
的时候怎么办?