删除字符串开始和结尾空格,并将中间多个空格合并为一个空格
来源:互联网 发布:淘宝卖干果有什么要求 编辑:程序博客网 时间:2024/04/29 16:21
1.常规解法:
int trim(char* str){ int count = 0; char* p = str; bool first = true; while(*str != '\0' && *str == ' '){ count++; str++; } if(*str == '\0'){ *p = '\0'; return count; } while(*str != '\0'){ while(*str != '\0' && *str != ' '){ *p++ = *str++; } if(*str == '\0')break; *p++ = *str++; while(*str != '\0' && *str == ' '){ count++; str++; } } if(*(p-1) == ' '){ p--; count++; } *p = '\0'; return count; }
2.需要两个指针, 首先除去开头的空格,这个相信大家都没有任何问题,这时字符串已经变为 a***** 这种形式了;
难度就在于,在这之后出现的空格,不能全部除去,需要保留一个。
void tri(char* p,char k){ assert(p); char* s1 = p; char* s2 = p; while (*s2&&*s2 == k) //先去掉开始的空格 ++s2; *s1 = *s2; if (*s2 == '\0') //若为全空格字符串 return; while (*(++s2) != '\0') { if (*s2 != k||*s1 != k) //核心:(<a,a>||<_,a>)s2为字符 一定要复制 <a,_> s2为空格 s1为字符 代表为首次出现空格 要复制 { *(++s1) = *s2; } } if (*s1 == k) // 消除最后一个空格 *s1 = '\0'; else *(++s1) = '\0';}
3. 更优解
void trim_str(char *str){ assert(str);{ int s_len = strlen(str); if(s_len>0){ char *s_b = str, *s_e = str+s_len, *s_copy = str; for( ; s_b!=s_e && *s_b==' '; ++s_b); while(1){ for( ; s_b!=s_e && *s_b!=' '; ++s_b) *s_copy++ = *s_b; if(s_b==s_e) break; *s_copy++ = *s_b++; for( ; s_b!=s_e && *s_b==' '; ++s_b); if(s_b==s_e){ --s_copy; break; } } *s_copy = '\0'; } }}
0 0
- 删除字符串开始和结尾空格,并将中间多个空格合并为一个空格
- 删除字符串中多余的空格]给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个
- 给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个
- 给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。
- 将字符串中的多个空格合并为一个空格
- 给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。例如:" i am a little boy.
- 面试题 删除字符串开始以及末尾的若干空格,并且把中间多个空格转化为一个
- 将字符串中开头和结尾空格去掉,并且中间空格仅仅保留一个
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化(合并)为1个
- 字符串中连续多个空格合并成一个空格
- 正则表达式去除字符串的首尾空格,合并字符串中的多个空格为一个
- 多空格合并为一个空格
- python将txt文件多行合并为一行并将中间的空格去掉
- java----输入一个字符串,去掉字符串开头的空格和结尾的空格,若字符串中间有连续的空格,则只保留一个空格。
- javascript将字符串中的多个空格替换为一个空格的正则实例
- 消除字符串开始和结束处的空格,并合并中间多余的空格
- 字符创去除首尾空格,合并串中的多个空格为一个空格
- 写一个函数,将字符串首尾空格去除,并且字符串之间的多个空格合并成一个。
- 以太网实现
- 社交招聘网络Linkedin的使用体验(HR招聘篇3)
- 这样选择省份是不是会快点?
- WebRTC源码分析二:音频模块结构
- POJ 3070 Fibonacci(矩阵快速幂)
- 删除字符串开始和结尾空格,并将中间多个空格合并为一个空格
- Android UI系列-----Dialog对话框
- lua 开发学习之旅三
- 有关音视频文件解析和提取等一系列问题的帖子集合,持续更新
- 多线程设计到的list深克隆
- 用户需求完胜,网站推广不再有瓶颈
- 二叉排序树
- 学习opencv 习题答案-第五章
- 基于按annotation的hibernate主键生成策略