字符串面試題

思路:設置一個空格標記符,若標記後再出現空格則記錄空格出現的數量,遍歷字符串找到一個非空格符後將其前移num位(多餘空格的位數)。處理完後,從後往前遍歷找到非空格符,將其下一位置爲字符串結束標誌。代碼如下


#include<iostream>
using namespace std;
void DeleteSpace(char *str)
{
	int num=0,len,i;
	bool IsSpace=false;
	len=strlen(str);
	for(i=0;i<len;++i)
	{
		if(str[i]==' ')
		{
			if(!IsSpace)
			{
			   IsSpace=true;
		       if(i==0)//字符爲空格
			   {
			       ++num;
			   }
			}
	       else//有了標記
		   {
		       ++num;
		   }
		}
		else//當前字符不是空格
		{
			IsSpace=false;
			str[i-num]=str[i];
			str[i]=' ';
		}
	}
	while(str[--len]==' ')//末尾掃描到第一個非空格符
		str[len+1]='\0';
}

int main()
{
	char string[]=" i am    from   china  ";
	DeleteSpace(string);
	cout<<string<<endl;

	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章