码迷,mamicode.com
首页 > 其他好文 > 详细

删除字符串中重复的字符

时间:2016-04-26 00:07:52      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:

1.任意字符串,删除重复字符

 1 #include<iostream>
 2 using namespace std;
 3 void removeDuplicates(char *str)
 4 {
 5     bool tag[256]={false};
 6     int i,j;
 7     i=j=0;
 8     while(str[i]!=\0)
 9     {
10         if(!tag[str[i]])
11         {
12             tag[str[i]]=true;
13             str[j++]=str[i];
14         }
15         i++;
16     }
17     str[j]=\0;
18 }
19 void main()
20 {
21     char *str=new char;
22     cin>>str;
23     removeDuplicates(str);
24     cout<<str;
25 }

2.字符串中只包含小写字母‘a‘-‘z‘

 1 void removeDuplicates(char *str)
 2 {
 3     int check=0;     //int类型有4个字节,32位
 4     int i,j;
 5     i=j=0;
 6     while(str[i]!=\0)
 7     {
 8         int val=str[i]-a;
 9         if((check&1<<val)==0)   //判断该字符是否存在过,若存在过,check的第val位和1<<val的第val位都为1,&运算后结果的第val位为1,即!=0
10         {
11             str[j++]=str[i];
12             check|=1<<val;   //当该字符不存在时,1左移val位,每个字符对应32位中的1位,所以当该字符存在时,第val位为1    
13         }
14         i++;
15     }
16     str[j]=\0;
17 }

注:该方法仅适用于字符串全部为小写字母或全部为大写字母的情况,int为32位,可以表示26个字母

 

删除字符串中重复的字符

标签:

原文地址:http://www.cnblogs.com/mrlsx/p/5433068.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!