zoukankan      html  css  js  c++  java
  • 对字符串处理的思想

    题目:

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

    示例1

    输入

    Jkdi234klowe90a3

    输出

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

    代码:

    #include <cstdio>
    #include <cstring>
    /*
    主要是对特殊情况的处理,比如:
    1.第一个或最后一个为数字的情况
    2.只有一个数字,周边都是字母的情况
    而采用标记的方式,则很好的之后了数字的位置,以及数字周边的情况
    */
    int main(){
        int i, cnt[107];
        char s[105];
        while(scanf("%s", s) != EOF){
            memset(cnt, 0, sizeof(cnt));
            for(i=0; i<strlen(s); i++){
                if(s[i]>='0' && s[i]<='9') cnt[i]=1;
            }
            if(s[0]>='0' && s[0]<='9') printf("*");
            for(i=0; i<strlen(s); i++){
                if(i>0 && cnt[i]-cnt[i-1]==1){
                    printf("*%c", s[i]);
                    if(i+1<strlen(s) && cnt[i]-cnt[i+1]==1) printf("*");
                }else if(i+1<strlen(s) && cnt[i]-cnt[i+1]==1) printf("%c*", s[i]);
                else printf("%c", s[i]);
            }
            if(s[strlen(s)-1]>='0' && s[strlen(s)-1]<='9') printf("*");
            printf("
    ");
        }
        return 0;
    }



  • 相关阅读:
    记: Spring Data Jpa @OneToMany 级联查询被动触发的问题
    后端小白的Bootstrap笔记
    最短路径问题
    深度优先搜索 & 广度优先搜索
    检讨书板子
    关于计时器
    博客园美化
    P4819 杀人游戏 (图论 )
    水站 (二分)
    对拍
  • 原文地址:https://www.cnblogs.com/heyour/p/12458489.html
Copyright © 2011-2022 走看看