题解 | #表示数字#
表示数字
https://www.nowcoder.com/practice/637062df51674de8ba464e792d1a0ac6
#include <iostream>
#include <string>
using namespace std;
//判断是否是数字
bool isnum(const char ch) {
if (('0' <= ch) && (ch <= '9'))
return true;
return false;
}
//在数字前后加星号‘*’
string shownum(string& s) {
int i = 0;
//若第一位就是数字,则需要在最前面添加星号
if (isnum(s[i])) {
s.insert(i, "*");
i++;
}
int j = i + 1;
for (; j <= s.length(); i++, j = i + 1) {
//分别判断s[i]和s[j]是否是数字
bool bi = isnum(s[i]);
bool bj = isnum(s[j]);
//‘^’异或,相同为0,不同为1
//bi ^ bj为真时,s[i]和s[j]分别为数字和非数字
if (bi ^ bj) {
//向字符串s插入"*",插入后'*'的下标为j
s.insert(j, "*");
//如果直接继续运行,数字之前会被插入无数个星号进入死循环,使用i++跳过星号
i++;
}
}
return s;
}
int main() {
string s;
while (cin >> s) { // 注意 while 处理多个 case
cout << shownum(s) << endl;
}
}
// 64 位输出请用 printf("%lld")

