题解 | #表示数字#

表示数字

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")

全部评论

相关推荐

01-30 16:13
浙江大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务