63.在字符串中删除特定的字符(字符串)。
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
例如,输入”They are students.”和”aeiou”,
则删除之后的第一个字符串变成”Thy r stdnts.”。
分析:这是一道微软面试题。在微软的常见面试题中,与字符串相关的题目占了很大的一部分,
因为写程序操作字符串能很好的反映我们的编程基本功。
看了前人的解法,加深了对快慢指针的理解
http://blog.csdn.net/alexingcool/article/details/6786590
然后自己写了个简单版本的,省略了将字符转换成索引后快速将当前字符与待删除序列匹配,从而判断其是否需要删除的过程。
这里假设待删除的字符串是t ="there are ", 要把其中的字符 'e' 删掉。代码如下:
输出结果是" thr ar"
#include<iostream>
using namespace std;
int main(void)
{
char t[]="there are";
int i=0,j=0;
while(t[i]!='e' && t[i]!='\0')//找到第一个'e'出现的位置
i++;
j=i;i++;
while(t[i]!='\0'){//快慢标记去掉字符'e',并将其它字符顺序前移
if(t[i]!='e'){
t[j++]=t[i++];
}
else i++;
}
t[j]='\0';
cout<<t<<endl;
return 0;
}