思路①:利用循环,碰到空格即删除(通过覆盖来删除),但是要注意连续空格的情况,还要注意每次删除一个字符后字符串的长度都要减一。
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
void DeleteSpace(char *s)
{
int len=strlen(s);
for(int i=0;i<len;i++)
{
if(s[i]==' ')
{
for(int j=i;j<len;j++)
{
s[j]=s[j+1];
}
len--;//字符串的长度减一
i--;//防止连续空格的情况
}
}
s[len]='\0';//防止最终的字符串过长
}
int main()
{
char s[100];
gets(s);
DeleteSpace(s);
puts(s);
return 0;
}
思路②:开辟另一组数组空间,但是空间复杂度较一种大。
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
void DeleteSpace(char s[100])
{
int lens=strlen(s);
char temp[100];
int j=0;
for(int i=0;i<lens;i++)
{
if(s[i]!=' ')
{
temp[j++]=s[i];
}
else
continue;
}
temp[j]='\0';
int lent=strlen(temp);
for(int k=0;k<lent;k++)
{
s[k]=temp[k];
}
s[lent]='\0';
}
int main()
{
char s[100];
gets(s);
DeleteSpace(s);
puts(s);
return 0;
}