从一个字符串(A)中删去另一个字符串(B)中已经出现的字

2016-12-02 12:52:28来源:网络收集作者:一线码农人点击

第七城市
从一个字符串(A)中删去另一个字符串(B)中已经出现的字符
1.首先要对另一个字符串进行标记
标记的方法有很多我举一个例子:
用一个bool数组来存26个字母并且对他们初始化为false,如果另外那个字符串存在,则将它变为true
比如 num[2]=true,就是说明 b 这个字符出现于另外一个字符串2.就是去掉那些在A中已经被标记的字符
你可以用移动的方法去掉它:(这种方法的时间复杂度为n*n)不提倡
for(int i=0;i{
k=A[i]-'a';
if(num[k])
{
for(int j=i;j A[j]=A[j+1];
}}
另外的一种方法,时间复杂度为n
我们可以设置两个指针 low ,high,开始的时候他们都指向A字符串的第一个元素即 low=high=A;
当high指针指向的字符不是ture,我们将*high=*low 并且 low++ ,high++;
当high指针指向的字符是ture,我们直接high++,其他的不处理;
之后我们需要把踢出去的字符阶段,直接*low='/0';
之后直接打印出字符串A;OK 了
while(*high!='/0') {king=*high-'a';
if(!num[king]){ *low=*high;
low++; }high++; } *low='/0';
第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台