思路:設置一個空格標記符,若標記後再出現空格則記錄空格出現的數量,遍歷字符串找到一個非空格符後將其前移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;
}
字符串面試題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.