标签:
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