列表

详情


HJ96. 表示数字

描述

将一个字符串中所有的整数前后加上符号“*”,其他字符保持不变。连续的数字视为一个整数。


数据范围:字符串长度满足

输入描述

输入一个字符串

输出描述

字符中所有出现的数字前后加上符号“*”,其他字符保持不变

示例1

输入:

Jkdi234klowe90a3

输出:

Jkdi*234*klowe*90*a*3*

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 1ms, 内存消耗: 308KB, 提交时间: 2021-09-08

#include <stdio.h>
#include <string.h>

int main()
{
    char a[1000]={0};
    while(scanf("%s",a)!=EOF)
    {
        int left=0;
        int right=0;
        int n=strlen(a);
        while(right<n)
        {
             if((a[right-1]>'9'||a[right-1]<'0')&&(a[right]>='0'&&a[right]<='9')&&(a[right+1]>'9'||a[right+1]<'0'))
            { 
                printf("*%c*",a[right]);
                right++;
                continue;
            }
            else if((a[right+1]>'9'||a[right+1]<'0')&&(a[right]>='0'&&a[right]<='9'))
            { 
                printf("%c*",a[right]);
                right++;
                continue;
            }
            else if((a[right-1]>'9'||a[right-1]<'0')&&(a[right]>='0'&&a[right]<='9'))
            { 
                printf("*%c",a[right]);
                right++;
                continue;
            }
            else
                printf("%c",a[right++]);
        }
        printf("\n");
    }
    
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 328KB, 提交时间: 2021-09-08

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
    char a[100];
    while(gets(a)){
        int n=strlen(a);
        char ans[100]={};
        int flag=0;
        int temp=0;
        for(int i=0;i<n;i++){
            if((a[i]<'0'||a[i]>'9')&&flag==0){
                ans[i+temp]=a[i];
            }else if(a[i]>='0'&&a[i]<='9'&&flag==0){
                ans[i+temp]='*';
                temp++;
                flag=1;
                ans[i+temp]=a[i];
                if(i==n-1)
                    ans[i+temp+1]='*';
            }else if(a[i]>='0'&&a[i]<='9'&&flag==1){
                ans[i+temp]=a[i];
                if(i==n-1)
                    ans[i+temp+1]='*';
            }else if((a[i]<'0'||a[i]>'9')&&flag==1){
                ans[i+temp]='*';
                temp++;
                flag=0;
                ans[i+temp]=a[i];
            }
        }
        printf("%s\n",ans);
    }
    return 0;
}

上一题