卡码网题目链接
#include<iostream>
using namespace std;
int main() {string s;while (cin >> s) {int count = 0; // 统计数字的个数int sOldSize = s.size();for (int i = 0; i < s.size(); i++) {if (s[i] >= '0' && s[i] <= '9') {count++;}}// 扩充字符串s的大小,也就是每个空格替换成"number"之后的大小s.resize(s.size() + count * 5);int sNewSize = s.size();// 从后先前将空格替换为"number"for (int i = sNewSize - 1, j = sOldSize - 1; j < i; i--, j--) {if (s[j] > '9' || s[j] < '0') {s[i] = s[j];} else {s[i] = 'r';s[i - 1] = 'e';s[i - 2] = 'b';s[i - 3] = 'm';s[i - 4] = 'u';s[i - 5] = 'n';i -= 5;}}cout << s << endl;}
}
enen不太会写
一、出错点
1.不会进行字符串的输入
2.后面思路不清晰
二、理解后的思路
1.进行字符串的输入
2.开辟新的空间,方便number填入
3.从后面开始填入,不是数字直接填入,是数字填入number,改变i
三、总结
多理清思路,敲代码,因为你看懂了并不代表你会敲代码了!!!
又是双指针的巧妙运用~