Chinaunix首页 | 论坛 | 博客
  • 博客访问: 107532
  • 博文数量: 20
  • 博客积分: 506
  • 博客等级: 下士
  • 技术积分: 216
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-08 21:10
文章分类

全部博文(20)

文章存档

2011年(20)

我的朋友

分类: C/C++

2011-02-18 13:03:29

  1. /*-----------------------------------------------------
  2. 写一个函数将任意给定的字符串去重复字符
  3. 例如给定wdefdwef -----> wdef
  4.                                        by zx_ace@sina.com
  5. -------------------------------------------------------*/
  6. #include<stdio.h>
  7. #include<string.h>

  8. char *quchong(char *tostr,char *str)
  9. {

  10. int k=strlen(str);
  11. //常规方法去重

  12. #if 0
  13.   int a=0;
  14.   int n=0;
  15.   int b,flag=0;
  16.   char t;
  17.   int c;

  18.    tostr[0]=str[0];
  19.    for(a=1;a<k;a++)
  20.    {
  21.        for(b=0;b<n+1;b++)
  22.        {
  23.       if (str[a]==tostr[b])
  24.       {
  25.         break;        
  26.       }
  27.      for(c=0;c<n+1;c++)
  28.      {
  29.           if (str[a]==tostr[c])
  30.         {
  31.          flag=1;    
  32.         }
  33.      }
  34.      if(str[a]!=tostr[b]&&flag==0)
  35.      {
  36.          n++;
  37.          tostr[n]=str[a];
  38.      }
  39.      flag=0;
  40.     }
  41.    }
  42.    
  43.    tostr[n+1]='\0';
  44.  #endif

  45.  #if 1
  46.  //映射的方法去除相同字符

  47.  int w[26]={ 0,0,0,0,0,0,0,0,0,0,
  48.              0,0,0,0,0,0,0,0,0,0,
  49.              0,0,0,0,0,0};
  50.  int i;
  51.  int m=0;
  52.  for(i=0;i<k;i++)
  53.  {
  54.      int d=str[i]-97;
  55.     w[d]=1;
  56.  }
  57.  for(i=0;i<26;i++)
  58.  {
  59.      if(w[i]==1)
  60.      {
  61.         char x=i+97;
  62.         tostr[m]=x;
  63.         m++;
  64.         //printf("%c",x);

  65.     }
  66.  }
  67.  tostr[m]='\0';

  68. #endif

  69. return tostr;
  70.     
  71. }

  72. int main()
  73. {
  74.   char a[20]="wdefdwef";
  75.   char b[20];
  76.   quchong(b,a);
  77.   printf("%s\n",b);

  78.   return 0;    
  79. }
阅读(14810) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~