删出多余的空格
时间: 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];
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。