<aside> 💡
思路:
string replaceDigital(string s){
// 先扫一遍统计数字的个数
int count = 0;
for (char c : s) {
if (c >= '0' && c <= '9') {
++count;
}
}
// 统一扩充s的size
string replace = "number";
int oldSize = s.size();
int newSize = oldSize + count * replace.size() - count;
s.resize(newSize);
// 快慢指针移动元素,从尾部开始移动
int slow = newSize - 1;
int fast = oldSize - 1;
while (fast >= 0) {
if (s[fast] >= 'a' && s[fast] <= 'z') {
// 小写字母直接移动
s[slow--] = s[fast--];
} else {
// 数字替换为"number"
for (int i = 0; i < replace.size(); ++i) {
s[slow - replace.size() + 1 + i] = replace[i];
}
slow -= replace.size();
--fast;
}
}
return s;
}