概述
今天写了个小编程,去除字符串中多余的空格,例如"I___am_____a______student."(下划线表示空格哈,打多个空格显示的还是一个),最后输出”I am a student.”
现在把自己的思路贴上,欢迎大家留言指正。
思路就是定义两个指针next和tail,一个在前面寻找非空格的字符,另外一个在后面一步一步移动,把后面的字符全部转移到前面来;然后为了去除多余的空格,也就是有多个或者一个空格的地方要留一个空格。
#include <iostream>
using namespace std;
char * deleteSpace(char * str){
char * tail = str;
char * next = str;
while(*next){ // 两个if可以合并到一块儿,这样写只是为了看着方便
if(*next != ' '){ // 查找不是空格的字符
*tail = *next;
tail++;
}
if(*next == ' ' && *(next-1) != ' '){ // 只留一个空格的判断条件;当前字符为空格且前一个不为空格。
*tail = *next;
tail++;
}
next++;
}
*tail='