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; }