人民网搜索面试---字符串移动(字符串为*号和26个字母的任意组合,把*号都移动到最左侧,把字母移到最右侧并保持相对顺序不变),要求时间和空间复杂度最小
#include <iostream>
#include <cstring>
using namespace std;
char* moveStar(char *s){
if(!s) return NULL;
int len = strlen(s);
int starCount = 0;
for(int i=len-1;i>=0;--i){
if(s[i]=='*'){
++starCount;
}else if(starCount>0){
s[i+starCount] = s[i];
}
}
for(int i=0;i<starCount;++i){
s[i]='*';
}
return s;
}
int main()
{
char s[7] = "AB*C*D";
moveStar(s);
for(int i=0;i<strlen(s);i++)
cout<<s[i]<<endl;
return 0;
}