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;
}
字符处理算法
本文介绍了一个字符串处理函数,该函数能够将输入字符串中的所有 '*' 字符移动到字符串的开头,并保持其他字符的相对顺序不变。例如,对于输入字符串 'ab**cd**e*12',处理后的结果为 '*****abcde12'。文章提供了具体的实现代码。
516

被折叠的 条评论
为什么被折叠?



