|
人民网搜索面试---字符串移动(字符串为*号和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;} |
|