本文最后更新于629 天前,其中的信息可能已经过时,如有错误请发送邮件到tomding1065@gmail.com
题目链接/文章讲解:https://programmercarl.com/kama54.%E6%9B%BF%E6%8D%A2%E6%95%B0%E5%AD%97.html
1.这个题就算是想到双指针我也真的要思考一会,代码很简单,但是实现起来,我想了好久,在while循环的终止条件处思考了一下,就是要将Oldindex指针--到数组的第一个位置处,配合Newindex的指针进行移动完成非数字的移动,和数字的倒着填充number 。
CPP
#include<iostream>
using namespace std;
int main(){
string s;
cin>>s;
int Oldindex = s.size()-1;
int count = 0;
for(int i = 0;i<s.size();i++){
if(s[i]>='0'&&s[i]<='9'){
count++;
}
}
s.resize(s.size()+count *5);
int Newindex = s.size()-1;
while(Oldindex>=0){
if(s[Oldindex]>='0'&&s[Oldindex]<='9'){
s[Newindex--] = 'r';
s[Newindex--] = 'e';
s[Newindex--] = 'b';
s[Newindex--] = 'm';
s[Newindex--] = 'u';
s[Newindex--] = 'n';
}else{
s[Newindex--] = s[Oldindex];
}
Oldindex--;
}
std::cout << s << std::endl;
}