要去掉字符串中所有的空格,思路很自然:碰到一个空格,将其删掉,然后后面的字符前移,但当空字符比较多的时候,总这么移动,难道不复杂么?还是想想另外的办法吧。

上面的方法时间复杂度比较高,下面,我们用空间来换时间:

#include <iostream>
using namespace std;void deleteAllSpace(char str[])
{int len = strlen(str);char *p = new char[len + 1];int i, j = 0;for(i = 0; i < len; i++){if(' ' != str[i]){p[j++] = str[i];}}p[j] = '\0';strcpy(str, p);
}int main()
{char str1[] = "abc";char str2[] = "  abc";char str3[] = "abc ";char str4[] = " a b c ";char str5[] = " a  b  c ";char str6[] = " a  bcd  e ";deleteAllSpace(str1);deleteAllSpace(str2);deleteAllSpace(str3);deleteAllSpace(str4);deleteAllSpace(str5);deleteAllSpace(str6);printf("%s\n", str1);printf("%s\n", str2);    printf("%s\n", str3);printf("%s\n", str4);printf("%s\n", str5);printf("%s\n", str6);return 0;
}

上面这个思路不错,但是,main中的程序太丑陋了,改为如下:

#include <iostream>
using namespace std;void deleteAllSpace(char str[])
{int len = strlen(str);char *p = new char[len + 1];int i, j = 0;for(i = 0; i < len; i++){if(' ' != str[i]){p[j++] = str[i];}}p[j] = '\0';strcpy(str, p);delete []p;}int main()
{char str[6][20] ={"abc","  abc","abc "," a b c "," a  b  c "," a  bcd  e "};int i;for(i = 0; i < 6; i++){deleteAllSpace(str[i]);printf("%s\n", str[i]);}return 0;
}

事实上,上述程序的空间复杂度较高,那有没有更好的办法呢?有,如下:

#include <iostream>
using namespace std;void deleteAllSpace(char str[])
{char *p = str;int k = 0;while('\0' != *p){if(' ' != *p){str[k++] = *p++; }else{p++;}}str[k] = '\0';
}int main()
{char str[6][20] ={"abc","  abc","abc "," a b c "," a  b  c "," a  bcd  e "};int i;for(i = 0; i < 6; i++){deleteAllSpace(str[i]);printf("%s\n", str[i]);}return 0;
}

OK.

去掉字符串中的所有空格相关推荐

  1. js去掉字符串中的所有空格

    1.使用js去掉字符串中的所有空格 1.1.定义一个去空格函数方法 function Trim(str,is_global){var result;result = str.replace(/(^\s ...

  2. python中文字符串多余空格_[785]python去掉字符串中多余的空格

    # -*- coding:utf-8 -*- import re # 检验某个字符是否是中文字符 def is_chinese(char): if '\u4e00' <= char <= ...

  3. C#如何去掉字符串中所有空格

    由于空格的ASCII码值是32,因此,在去掉字符串中所有的空格时,只需循环访问字符串中的所有字符,并判断它们的ASCII码值是不是32即可.去掉字符串中所有空格的关键代码如下: testCharEnu ...

  4. python之去掉字符串中空格的方法

    #strip():去掉头和尾的空格 str1=" I love U " print(str1.strip())#lstrip():去掉左侧空格 str2=" I love ...

  5. php去字符串空格,php怎么去掉字符串中空格

    php去掉字符串中空格的方法:1.使用正则表达式删除字符串中间的空格及去除字符串首尾空格:2.使用str_replace和strtr函数删除字符串中间的空格:3.使用trim函数去除一个字符串两端空格 ...

  6. java去掉字符串的空格_如何去掉字符串中的空格?

    问题阐述 去掉字符串首尾的空格非常简单,使用trim()方法即可实现,但是如果要去掉字符串中的空格,应该怎么实现呢? 专家解答 Java 中没有提供直接去除字符串中空格的方法,要想去除字符串中的空格, ...

  7. 去掉字符串中所有空格

    //去掉字符串中所有空格-1public static string RemoveBlank(string str){string RetStr = str.Replace(" " ...

  8. python中去掉字符串中的空格

    我们想去除字符串中不必要的空格时可以使用如下方法: 在这里以str作为例子来演示.在str中前中后三处都有空格. 函数原型: 声明:str为字符串,rm为要删除的字符序列 str.strip(rm) ...

  9. php字符串去空格函数,php去掉字符串中的空格

    php去掉字符串中空格的方法:1.使用php函数trim去除:2.使用php函数str_replace去除:3.使用php函数strtr去除:4.使用trimall方法去除:5.通过正则去掉普通空格等 ...

最新文章

  1. 深入理解java类加载
  2. lua学习笔记之字符串
  3. asp.net 小记
  4. Yii Framework2.0开发教程(8)输入验证
  5. 常见单片机芯片分析简介
  6. Python新手到熟练的百天之路
  7. 三大检索工具(SCI、EI、ISTP)
  8. matlab 贝塔系数,贝塔系数的三种计算方法.pdf
  9. 这下爽了,居然有人通过这个把Linux的命令提示符给整明白了
  10. SSM整合篇--JSP介绍
  11. Linux 7通过防火墙安全策略修补安全漏洞
  12. apache服务器设置
  13. 1+3+5+....+99的和为
  14. 凯云水利水电工程造价管理系统 技术解析(四)取费管理(一)
  15. 【限时删除】一个惊艳的神器,可全网爬取各种资源..........
  16. rk3568 修改开机动画
  17. C语言中强制数据类型转换
  18. 五款PPT的素材黑科技
  19. 哪款软件可以测试刘海,测试自己适合什么刘海 按照脸型来选一测便知
  20. .NET框架-LINQ 9类操作符使用举例

热门文章

  1. 计算机图形学 实验6 直线的裁剪—Cohen Sutherland裁剪算法(MFC中)
  2. 解决Echarts使用tab切换时只显示第一个tab中图表,其他tab中图表不显示或显示不全问题
  3. Windows Sockets 函数api (微软官方文档)
  4. 计算机网络实验华中科技大学,华中科技大学计算机网络实验报告.pdf
  5. C++中Exit()与atexit()函数的使用
  6. C#时间显示格式(12小时制VS24小时制)
  7. matlab求异面直线的公垂线,求异面直线的公垂线
  8. ELF文件——DWARF源码解析
  9. USB Camera摄像头 (UVC 与 gspca)
  10. android 杀死程序收不到推送_Android收不到推送解决方案