华为机试HJ96题解 | #表示数字#
表示数字
https://www.nowcoder.com/practice/637062df51674de8ba464e792d1a0ac6
#include <cctype> #include <iostream> //#include <string> #include <bits/stdc++.h> using namespace std; // 双指针解法 string AddStartsBeforeAndAfterDigital(const std::string &s) { string res; // 遍历字符串 for (int i = 0; i < s.size(); ) { int j = i; // 当前字符是数字 if (isdigit(s[j])) { // 找到最后一个数字(连续数字) while (isdigit(s[j]) && j < s.size()) { j++; } // 在连续数字前后加上* res += "*" + s.substr(i, j - i) + "*"; // 记录最后一个数字的下一个字符 i = j; } else { // 如果当前字符不是数字,则直接加上 res += s[j]; i++; } } return res; } int main() { string s; while (cin >> s) { // 注意 while 处理多个 case cout << AddStartsBeforeAndAfterDigital(s) << endl; } } // 64 位输出请用 printf("%lld")