删出多余的空格

删出多余的空格

时间: 1ms        内存:128M

描述:

小平在给弟弟检查英语作业时时,发现每个英语句子单词之间的空格个数不等,请你编程帮他把句子中多余的空格去掉,使每个单词之间只保留一个空格,首尾的空格也去掉。
部分代码已给定如下,只需要提交缺失的代码。

#include <string.h>
int main()
{
    void delSpace(char sentence[]);
    char sentence[1000];
    gets(sentence);
    delSpace(sentence);
    puts(sentence);
    return 0;
}

输入:

英文句子

输出:

删除多余空格后的句子

示例输入:

   Happiness     is   a way     station between    too much    and too    little.     

示例输出:

Happiness is a way station between too much and too little.

提示:

参考答案(内存最优[752]):

#include <stdio.h>
#include <string.h>
int main()
{
    void delSpace(char sentence[]);
    char sentence[1000];
    gets(sentence);
    delSpace(sentence);
    puts(sentence);
    return 0;
}
void delSpace(char s[])
{
int i,j;
while(s[0]!=0&&s[0]==32)
{
	for(j=0;s[j]!=0;j++)
	{
   s[j]=s[j+1];
}
}
int len=strlen(s);
if(len<=1)
{
return;
}
for(i=1;i<len;)
{
	if(s[i]==s[i-1]&&s[i]==32)
	{
		for(j=i;j<len;j++)
		{
s[j]=s[j+1];
		}
len--;
	}

	else i++;
}
if(s[len-1]==' ')
{
s[len-1]=0;
}
s[len-1]=0;
s[len-2]='.';
}

参考答案(时间最优[0]):


#include <stdio.h>
#include <string.h>
int main()
{
    void delSpace(char sentence[]);
    char sentence[1000];
    gets(sentence);
    delSpace(sentence);
    puts(sentence);
    return 0;
}
void delSpace(char sentence[])
{
    int newpos=0,pos;
    for(pos=0; sentence[pos]==' '; pos++);
    while(sentence[pos]!='\0')
    {
        if(sentence[pos]==' ')
        {
            pos++;
            if(sentence[pos]=='\0'||sentence[pos]==' ')
                continue;
            sentence[newpos++]=' ';
        }
        sentence[newpos++]=sentence[pos++];
    }
    sentence[newpos]=sentence[pos];
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞