From e36c15a01cf93e4ea2d30545c485f6c6969650aa Mon Sep 17 00:00:00 2001 From: sss1h <49825610+sss1h@users.noreply.github.com> Date: Thu, 11 Jan 2024 21:43:31 +0800 Subject: [PATCH] =?UTF-8?q?Update=20kama54.=E6=9B=BF=E6=8D=A2=E6=95=B0?= =?UTF-8?q?=E5=AD=97.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/kama54.替换数字.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/problems/kama54.替换数字.md b/problems/kama54.替换数字.md index 2b3d53de..f5e30a70 100644 --- a/problems/kama54.替换数字.md +++ b/problems/kama54.替换数字.md @@ -56,36 +56,36 @@ C++代码如下: ```CPP -#include +#include using namespace std; int main() { string s; while (cin >> s) { + int sOldIndex = s.size() - 1; 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的大小,也就是将每个数字替换成"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]; + int sNewIndex = s.size() - 1; + // 从后往前将数字替换为"number" + while (sOldIndex >= 0) { + if (s[sOldIndex] >= '0' && s[sOldIndex] <= '9') { + s[sNewIndex--] = 'r'; + s[sNewIndex--] = 'e'; + s[sNewIndex--] = 'b'; + s[sNewIndex--] = 'm'; + s[sNewIndex--] = 'u'; + s[sNewIndex--] = 'n'; } 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; + s[sNewIndex--] = s[sOldIndex]; } + sOldIndex--; } - cout << s << endl; + cout << s << endl; } }