现在的位置: 首页 > 综合 > 正文

面试100题系列之2字符串删除多余空格

2017年10月17日 ⁄ 综合 ⁄ 共 565字 ⁄ 字号 评论关闭

其实就是删除多余的空格,其实两种方法,一种是在第一个遇到的单词前面加空格,这样的话需要考虑串首的情况。可以用flag来标记是不是句子的第一个单词。另一种方法是在单词结束的字符后面加空格,但需要考虑字符串以空格结尾的情况,遍历完字符串之后,直接判断最后一个元素是不是空格就可以了。第二种方法更直观一点。
如果不仅仅是空格,还有回车。参考扩展问题及其再思考

#include<stdio.h>
#include<string.h>

void RemoveSpace(char *str, int nLen)
{
	int i,k;
	int flag = 0;
	for(i = 0, k = 0; i < nLen; ++i)
	{
		//不是空格直接拷贝
		if(str[i] != ' ')
		{
			str[k++] = str[i];
			flag = 1;
		}
		//当前是空格,并且前一个不是空格,则加一个空格
		else if(flag == 1)
		{
			str[k++] = ' ';
			flag = 0;
		}
	}
	//如果以空格结尾,那最后一个一定是一个空格
	if(str[k - 1] == ' ')
		str[k - 1] = '\0';
	else
		str[k] = '\0';
}

int main()
{
	char str[100];
	int nLen;
	while(gets(str))
	{
		nLen = strlen(str);
		RemoveSpace(str, nLen);
		puts(str);
	}
}

 

【上篇】
【下篇】

抱歉!评论已关闭.