您的位置:首页 > 其它

算法--将字符串中*号移到左边,字母移到右边,保持字母相对顺序不变

2014-11-24 17:06 337 查看
这是一个O(n)时间复杂度实现的,看代码应该可以明白

#include<stdio.h>

void Swap(char& a, char& b)
{
a=a^b;
b=a^b;
a=a^b;
}
char* StrMv(char* str, int n)
{
int high=0;
int i=n-2;

while(*(str+i)!='*') i--;
high=i;

while(i>=0)
{
if(*(str+i)=='*') i--;
else
{
Swap(*(str+i), *(str+high));
high--;
}
}
return str;
}

int main(int argc, char** argv)
{
char str[61]="******ab*cd**dn**gedt**kfhjk*f***k****mg**j*afa*ik****adfa**";
printf("%s\n", StrMv(str, 61));
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐