代码随想录:替换数字
代码随想录:替换数字
一天能搞错三次边界条件我也是神人了。
这里为了节省空间,vector在原来的基础上扩充,然后反向遍历重构字符串。
在反向构建时i是可以等于0的。
#include<iostream>
#include<vector>
using namespace std;
int main() {
string s;
while (cin >> s) {
int old_size = s.size();
int num_sum = 0;
//统计数字的个数
for (auto it : s) {
if (it >= '0' && it <= '9') {
num_sum++;
}
}
int new_size = old_size + num_sum * 5;
s.resize(new_size);
int target = new_size - 1;
for (int i = old_size - 1; i >= 0; i--) {
if (s[i] >= '0' && s[i] <= '9') {
s[target--] = 'r';
s[target--] = 'e';
s[target--] = 'b';
s[target--] = 'm';
s[target--] = 'u';
s[target--] = 'n';
}
else {
s[target--] = s[i];
}
}
cout << s;
}
}

浙公网安备 33010602011771号