这是一个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;
}