微软100题(88)字符串处理函数

来源:互联网 发布:苏曼莎捏脸数据 编辑:程序博客网 时间:2024/06/05 00:41
编码完成下面的处理函数。
函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函数并返回值为5。(要求使用尽量少的时间和辅助空间)

思路:从后往前处理,字符串的题目第一反应考虑能不能反着处理
int FuncStr(char* str){int len = strlen(str);char* p1 = str + len -1;char* p2 = str + len -1;while (p1>=str){if(*p1 != '*')*p2-- = *p1;p1--;}int ans = p2 - p1;while (p2>=str){*p2-- = '*';}return ans;}


0 0