首页 > 代码库 > 删除字符串中多余的空格
删除字符串中多余的空格
作者 : 卿笃军
今天遇到的一道笔试题,后来百度 了一下,原来是一道新浪的面试题。
题目大意是这样:给你一个任意字符串,要求你删除字符串中多余的空格。
示例:(‘_‘表示空格)
1)"12__abc_98_" ==》 "12_abc_98"
2)"______65_21__54__3_89___" ==》 "65_21_54_3_89"
思路:设2个下标i,pos一个用于遍历字符串(i),另外一个用于指向当前已经拷贝到的位置(pos)。
具体拷贝(覆盖)思路:
一、遇到非空格就开始拷贝,同时设置开关space = 1。
二、当遇到空格的时候,拷贝一个空格(因为开关space = 1执行一次后就关闭了space = 0)。
三、尾部处理。
#include <stdio.h> int main() { char str[100]; int i,space = 0; //一次性开关设置 int pos = 0; //标记新的字符串 gets(str); //遍历整个字符串 for(i = 0; str[i] != ‘\0‘; i++) { if(str[i] != ‘ ‘) { str[pos++] = str[i]; space = 1; //一次性开关设置 } else { if(space == 1) //使用一次就置为0,相当于只拷贝1次空格 { str[pos++] = str[i]; space = 0; } } } //剔除字符结尾的空格,并加上结束符 if(pos > 0 && str[pos-1] == ‘ ‘) str[pos-1] = ‘\0‘; else str[pos] = ‘\0‘; puts(str); return 0; }
参考文献:liuxialong的专栏,新浪微博笔试题:删除字符串中多余的空格:http://blog.csdn.net/liuxialong/article/details/6543598
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。