在字符串中删除特定字符
2013-07-31 19:52
232 查看
例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。
关于删除字符,后面的字符要往前移,如果每删除一个就移一次,O(n^2)这复杂度有点太高,仅仅用快慢指针就可以搞定,这个方法非常有用,比如求解循环链表。 初始化:快慢指针指向第一个字符 循环:如果快指针指的是不需要的字符,将值赋给慢指针后,快慢指针同时++;如果快指针指向待删除字符,那么直接++; 终止:快指针指向'\0'
关于删除字符,后面的字符要往前移,如果每删除一个就移一次,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; }
相关文章推荐
- 算法题4 在字符串中删除特定的字符
- 程序员面试题精选100题(36)-在字符串中删除特定的字符[算法]
- 在字符串中删除特定的字符
- 在字符串中删除特定的字符 【微软面试100题 第六十三题】
- coding - 在字符串中删除特定的字符
- 程序员面试题精选100题(36)-在字符串中删除特定的字符[算法]
- 在字符串中删除特定的字符
- 程序员面试题精选100题(36)-在字符串中删除特定的字符
- 在字符串中删除特定的字符
- 在字符串中删除特定的字符(程序员面试题精选100题)
- 在字符串中删除特定的字符
- 在字符串中删除特定的字符
- 字符串面试题系列之六:在字符串中删除特定的字符
- C语言实现删除字符串中特定的字符
- 在字符串中删除特定的字符 【微软面试100题 第六十三题】
- 删除字符串中的特定字符
- 在字符串中删除特定的字符
- 通过正则 来找出特定的字符 可以输出找出的字符 也可输出删除特定字符的原字符串
- 【字符串处理算法】删除特定的字符的算法设计及C代码实现
- 程序员面试题精选100题(36)-在字符串中删除特定的字符