您的位置:首页 > 其它

在字符串中删除特定字符

2013-07-31 19:52 232 查看
例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。

关于删除字符,后面的字符要往前移,如果每删除一个就移一次,O(n^2)这复杂度有点太高,仅仅用快慢指针就可以搞定,这个方法非常有用,比如求解循环链表。 初始化:快慢指针指向第一个字符 循环:如果快指针指的是不需要的字符,将值赋给慢指针后,快慢指针同时++;如果快指针指向待删除字符,那么直接++; 终止:快指针指向'\0'
bool is_delete_char(char temp)
{
char delete_c[5] ={'a','e','i','o','u'};
for(int i =0;i<5;i++)
if(delete_c[i] == temp)
return true;
return false;
}

char * delete_special_char(char *s)
{
if(s == NULL)
return NULL;
cout<<"before:"<<s<<endl;
int slow_index =0;  //快慢指针
int fast_index =0;
for (;s[fast_index]!=0;fast_index++)
{
if(!is_delete_char(s[fast_index]))
s[slow_index++] = s[fast_index];
}
s[slow_index] =0;  //end string Don't forget    cout<<"after:"<<s<<endl;
return s;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: