一.相关链接
题目链接:替换数字
二.心得体会
这道题是一道字符串题目,需要使用到双指针来解决。主要的思想是统计数字个数一次性扩充好字符串大小,然后按照原字符串从后往前读取,并按照读取到的内容来从后往前填充新的字符串。
三.代码
#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; }
}