将字符串中的字符'*'移到串的前部分 的一个解法

来源:互联网 发布:淘宝欢迎话术 编辑:程序博客网 时间:2024/04/29 04:29

2005年11月金山笔试题。编码完成下面的处理函数。
函数将字符串中的字符'*'移到串的前部分,

前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。
如原始串为:ab**cd**e*12,
处理后为*****abcde12,函数并返回值为5。(要求使用尽量少的时间和辅助空间)

 

int movStar(char * p, int n){ char * q1 = p+(n-1), *q2 = p+(n-1); while(q1>=p) {  if(*q1 != '*')   *q2-- = *q1;  q1--; } int nRet = q2 - q1; while(q2>=p) {  *q2-- = '*'; } return nRet;}


 

原创粉丝点击