#include <iostream>
#include <string.h>
using namespace std;
char* MoveStar(char s[])
{
if(!s) return NULL;
int StarCount=0;
int len=strlen(s);
for(int i=len-1; i>=0; i--)
{
if(s[i]=='*')
StarCount++;
else if(StarCount>0)
{
s[i+StarCount]=s[i];
}
}
for(i=0; i<StarCount; i++)
s[i]='*';
return s;
}
void main()
{
char s[]="***Dia**oyu is**lan**ds is China's*** ";
cout<<MoveStar(s)<<endl;
}
字符串移動(字符串爲*號和26個字母的任意組合,把*號都移動到最左側,把字母移到最右側並保持相對順序不變),要求時間和空間複雜度最小 .
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.