删除小写字母字符串中重复字符

来源:互联网 发布:知乎 甲醇 燃料电池 编辑:程序博客网 时间:2024/06/06 17:30

具体场景:

删除小写字母字符串中重复字符。如果可以,优先删除重复字符中排在比他小字符前面的字符。

比如,输入:bbcacdww;输出:bacdw

思路:

1.先将字符的出现次数统计好。

2.再重新遍历一遍,如果出现次数是一次就直接拷贝到另一个数组,如果次数不是1,就直接进行下一次,然后次数--。

参考代码如下:

void DeletePar(char a[],int len){int count[26]  = {0};for (int i = 0;i<len;i++)   //计算每个字母出现的次数count[a[i]-'a']++;int sum = 0;for (int i = 0;i<26;++i)//计算删除重复元素后的长度{if(count[i]>0)sum+=1;}char *temp =new char[sum];int num = 0;for (int i = 0;i<len;++i){if (count[a[i]-'a']==1)temp[num++] = a[i];else if(count[a[i]-'a']>1)count[a[i]-'a']--;if(num > sum)break;}for (int i = 0;i<sum;++i)a[i] = temp[i];a[sum] = 0;}

测试代码为:

char a[]={"abcdbca"};char b[] = {"bbcacdww"};int len = strlen(a);int lenb = strlen(b);DeletePar(a,len);DeletePar(b,len);cout<<"删除后"<<a<<endl;cout<<"删除后"<<b<<endl;


结果为:


阅读全文
0 0
原创粉丝点击