题解 | #表示数字#

表示数字

https://www.nowcoder.com/practice/637062df51674de8ba464e792d1a0ac6

//用空间换时间,两个数组,遇到数字就前后加*,否则就逐一复制
#include<stdio.h>
#include<string.h>
int main()
{
    char arr1[100], arr2[201];
    gets(arr1);
    int sz = strlen(arr1), i = 0, j = 0;
    for (i = 0; i < sz; i++)
    {
        if (arr1[i] >= '0' && arr1[i] <= '9')
        {
            if ((arr2[j - 1] != '*') && (arr2[j - 1] < '0' || arr2[j - 1]>'9'))
            {
                arr2[j] = '*';
                j++;
                i--;
            }
            else
            {
                if(arr1[i-1]=='*')
                {
                    arr2[j] = '*';
                    j++;
                }
                arr2[j] = arr1[i];
                j++;
            }
            if (arr1[i + 1] < '0' || arr1[i + 1]>'9')
            {
                arr2[j] = '*';
                j++;
            }
        }
        else
        {
            arr2[j] = arr1[i];
            j++;
        }
    }
    arr2[j]='\0';
    printf("%s\n",arr2);
    return 0;
}

全部评论

相关推荐

2025-12-30 16:42
同济大学 C++
仁狂躁使者:哎呀,不用担心,我当时配环境配了两天,项目捋不清就问问导师能不能用ai,慢慢就清了,会好起来的
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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