一.相关链接
题目链接:替换数字
二.心得体会
这道题是一道字符串题目,需要使用到双指针来解决。主要的思想是统计数字个数一次性扩充好字符串大小,然后按照原字符串从后往前读取,并按照读取到的内容来从后往前填充新的字符串。
三.代码
#include<iostream>
using namespace std;
int main(){
string s;
int number_num = 0;
int old_tail = 0;
int new_tail = 0;
while(cin>>s){
old_tail = s.size();
for(int i=0;i<old_tail;i++){ //统计数字个数
if(s[i]>='0'&&s[i]<='9') number_num++;
}
s.resize(s.size()+5*number_num); //扩充字符串
new_tail = s.size()-1;
old_tail--;
for(;old_tail>=0;old_tail--){ //从后往前生成新字符串
if(s[old_tail]>='0'&&s[old_tail]<='9'){
s[new_tail] = 'r';
s[new_tail-1] = 'e';
s[new_tail-2] = 'b';
s[new_tail-3] = 'm';
s[new_tail-4] = 'u';
s[new_tail-5] = 'n';
new_tail -= 6;
}
else{
s[new_tail] = s[old_tail];
new_tail--;
}
}
cout<<s;
}
}