字符串移動(字符串爲*號和26個字母的任意組合,把*號都移動到最左側,把字母移到最右側並保持相對順序不變),要求時間和空間複雜度最小 .

#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;
}

發佈了90 篇原創文章 · 獲贊 22 · 訪問量 41萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章