您的位置:首页 > 其它

16、2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。如原始串为:

2014-02-12 16:34 676 查看
16、2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函数并返回值为5。(要求使用尽量少的时间和辅助空间)



答案来自互联网,具体出处忘了





最高效算法:

int change1(char *str)
{
int i,j=strlen(str)-1;
for(i=j; j>=0; j--)
{
if(str[i]!='*')
{ i--; }
else if(str[j]!='*')//将非‘*’字符换到后面
{
str[i] = str[j];
str[j] = '*';
i--;
}
}
return i+1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐