代码随想录:替换数字

代码随想录:替换数字

一天能搞错三次边界条件我也是神人了。

这里为了节省空间,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;
    }
}
posted @ 2024-12-02 22:14  huigugu  阅读(10)  评论(0)    收藏  举报