总结:
一:1——9的字符连续,可在一个范围做判断,不用依次枚举
二:字符数字与字符相差48
如:‘2’ - 48 = 2;
没ac原因:
缺少‘1’这个字符串。
第一次ac
#include <iostream>
#include <cstring>
using namespace std;
string s;
string x;
int main(){
cin>>s;
int n = s.length();
for(int i = 0;i < n;i ++){
if(s[i] == '1'||s[i] == '2'||s[i] == '3'||s[i] == '4'||s[i]=='5' ||s[i]=='6'||s[i]=='7' ||s[i]=='8' ||s[i]=='9'){
for(int j = 0;(j < s[i] - 49);j ++){
x.push_back(s[i-1]);
}
}else{
x.push_back(s[i]);
}
}
cout<<x;
return 0;
}
优化
1.字符串判断范围可以直接用s[i]>=‘1’&&s[i]<=‘9’
另一种思路:
不用创造一个x直接输出
#include <iostream>
#include <cstring>
using namespace std;
string s;
int main(){
cin>>s;
int n = s.length();
for(int i = 0;i < n;i ++){
if(s[i]>='1'&&s[i]<='9'){
for(int j = 0;(j < s[i] - 49);j ++){
cout<<s[i-1];
}
}else{
cout<<s[i];
}
}
return 0;
}