zoukankan      html  css  js  c++  java
  • C 寻找重复字符并输出他们的位置

     #include <stdio.h>
     #include <string.h>
     #include <stdlib.h>
     
     //给定字串 寻找重复字符  并记录下位置
     //若字串是"0aabb" 则输出a:1 a:2 b:3 b:4
     
     int isExist(char distinct[],char ch);
     int addToExist(char distinct[],char ch);
     int countTimes(char str[],int len,char ch);
     main()
     {
         char str[]="abcaaAB12ab12";
         int i=0;
         char distinct[20];
         for(; i<20; i++)
         {
             distinct[i]=0;
         }
     
         //addToExist(distinct,'a');
         //printf("%c",distinct[0]);//ok
     
         int len=strlen(str);
         //printf("%d",isExist(distinct,str[0]));//ok
         for(i=0; i<len; i++)
         {
             int isEx=isExist(distinct,str[i]);//存在则是1
     
             //遇到新字符 放入到distinct中去
             //然后统计该字符出现次数
             if(!isEx)
             {
                 //printf("not %c",str[i]);//ok
                 addToExist(distinct,str[i]);
                 countTimes(str,len,str[i]);
             }
             else
             {
                 //越过
             }
     
         }
     }
     
     
     int isExist(char distinct[],char ch)
     {
         int i=0;
         int yes=0;//该字符是否已经存在
         for(; i<20; i++)
         {
             if(distinct[i]==ch)
             {
                 yes=1;
                 break;
             }
         }
         return yes;
     }
     
     /**
     新字符加入到最有一个有效字符之后
     也就是放在第一个ASCII为0的位置  先前已经将distinct数组所有元素赋值为0
     */
     int addToExist(char distinct[],char ch)
     {
         int i=0;
         char st;
         while( (st=distinct[i])!=0 )
         {
             i++;
         }
         distinct[i]=ch;
         return ++i;
     
     }
     
     /**
     注意只有重复字符才输出他们的位置
     */
     int countTimes(char str[],int len,char ch)
     {
         int i=0;
         int countChar=0;
         for(; i<len; i++)
         {
             if(str[i]==ch)
             {
                 //printf("%c:%d,",ch,i);
                 countChar++;
             }
     
         }
         if(countChar>1)
         {
             for(i=0; i<len; i++)
             {
                 if(str[i]==ch)
                 {
                     printf("%c:%d,",ch,i);
                 }
     
             }
         }
         return countChar;
     }
  • 相关阅读:
    基于LR的新闻文本分类
    NLTK最详细功能介绍
    11 Spark案例
    自然语言处理TF-IDF实践Demo
    NLP模型
    数据仓库
    SVN
    【E-26】ERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: '/opt/miniconda3/lib/python3.7/site-packages/mistune-0.8.4.dist-info/METADATA'
    【ML-7-2-1】聚类算法-KNN实践
    【E-25】ValueError: day is out of range for month
  • 原文地址:https://www.cnblogs.com/cart55free99/p/2959210.html
Copyright © 2011-2022 走看看