思路:设置一个空格标记符,若标记后再出现空格则记录空格出现的数量,遍历字符串找到一个非空格符后将其前移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;
}
字符串面试题
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.