From 剑指Offer 何海涛 著

#include <iostream>
#include <cstring>void replaceBlank(char *str, int length) {if(str != NULL && length > 0) {int numberOfBlank = 0;int originLength = 0;while(str[originLength] != '\0') {if(str[originLength++] == ' ') {numberOfBlank++;}}int newLength = originLength + (numberOfBlank<<1);if(newLength <= length) {int indexOfOrigin = originLength;int indexOfNew = newLength;while(indexOfOrigin < indexOfNew) {if(str[indexOfOrigin] == ' ') {str[indexOfNew--] = '0';str[indexOfNew--] = '2';str[indexOfNew--] = '%';} else {str[indexOfNew--] = str[indexOfOrigin];}indexOfOrigin--;}}}
}

测试集:

void test(char *str, int length, char *expected) {std::cout << std::boolalpha << (replaceBlank(str, length), str != NULL && expected != NULL && strcmp(str, expected) == 0 ? true : str == expected) << std::endl;
}int main(int argc, char* argv[]) {char str1[32] = "";char str2[32] = "   ";char str3[32] = "Hello World!";char str4[32] = " HelloWorld!";char str5[32] = "HelloWorld! ";char str6[32] = "Hello  World!";test(NULL, 0, NULL);test(str1, 16, "");test(str2, 32, "%20%20%20");test(str3, 32, "Hello%20World!");test(str4, 32, "%20HelloWorld!");test(str5, 32, "HelloWorld!%20");test(str6, 32, "Hello%20%20World!");retur 0;}

转载于:https://www.cnblogs.com/long3216/p/4439095.html

{面试题4: 替换空格}相关推荐

  1. 【剑指offer】面试题 5. 替换空格

    面试题 5. 替换空格 题目:请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy. 则经过替换之后的字符串为We%20Are%20Hap ...

  2. 剑指offer:面试题05. 替换空格

    题目:替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 输入:s = "We are happy." 输出:"We%20are% ...

  3. 面试题05. 替换空格

    2020-03-21 1.题目描述 替换空格 2.题解 if (s[i]==' ') res+="%20"; else res+=s[i]; 3.代码 #include <i ...

  4. 剑指offer面试题:替换空格

    https://blog.csdn.net/yanxiaolx/article/details/52235212 题目:请实现一个函数,把字符串中的每个空格替换成"%20".例如输 ...

  5. 剑指Offer - 面试题5. 替换空格(字符串)

    1. 题目 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例 1: 输入:s = "We are happy." 输出:"We%20 ...

  6. 剑指offer面试题05. 替换空格

    题目描述 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 思路 详见链接 在 Python 和 Java 等语言中,字符串都被设计成不可变的类型,即无法直接修改字符串 ...

  7. c++牛客网面试题05. 替换空格

    class Solution{public:string replaceSpace(string s){int count=0,len= s.size();//统计空格的个数for(char c : ...

  8. leetcode刷题之 剑指offe 面试题05. 替换空格 犯傻记录

    2020.3.6 刷到剑指offer第5题,题目描述如下: 题目本身没啥好说的,就是先统计空格的个数,然后把长度增加,用两个指针从后往前插. 采用m = s.count(' ',0,len(s)-1) ...

  9. 【剑指Offer面试题】 九度OJ1510:替换空格

    c/c++ 中的字符串以"\0"作为结尾符.这样每一个字符串都有一个额外字符的开销. 以下代码将造成内存越界. char str[10]; strcpy(str, "01 ...

  10. 剑指offer——面试题4:替换空格

    #剑指offer--面试题4:替换空格 此题的关键思路在于字符串的从后向前复制!!! class Solution { public:void replaceSpace(char *str,int l ...

最新文章

  1. Spring 注解之@RestController与@Controller的区别
  2. 关于java代码生成器---上篇之原理
  3. 【AS3代码】隐藏原有鼠标箭头,并自定义鼠标小箭头
  4. Expected more than 1 value per channel when training, got input size torch.Size
  5. 估价分类不允许分离估价
  6. 重装php后网站无法,1、解决重装php后变量在下一个页面无法取到的问题:
  7. 李焕英是如何从不被看好到碾压唐探3的?
  8. 2015年,Web 进入移动时代
  9. 【面试宝典 | 01】面经
  10. JavaScript中的原型和对象机制
  11. threejs获取模型坐标_Threejs倒影实现解析
  12. 信息学奥赛一本通 1121:计算矩阵边缘元素之和 | OpenJudge NOI 1.8 03:计算矩阵边缘元素之和
  13. 如何使用Jmeter对WebSocket进行压力测试
  14. TCP 理论概述与 Java 编码入门
  15. 苹果被拒:Guideline 5.0 - Legal
  16. MySQL和数据库可视化工具的下载与安装
  17. ubuntu16安装liteide
  18. 用友汽车IPO过会:拟募资5.6亿 高瓴刚参与母公司定增
  19. 十大安卓应用商店推广渠道排行榜
  20. 阿里云服务器续费流程及折扣

热门文章

  1. [转载] 七龙珠第一部——第019话 天下第一武道会开始
  2. 微型linux系统裁剪
  3. 写给初学asp.net的新人们 新手学习经验
  4. onfling滑动界面进行Activity切换
  5. 巧妙检查WinXP系统漏洞
  6. Google整体架构猜想
  7. CAN通讯矩阵之Intel格式与Motorola格式
  8. 父级div没高度不能自适应高度的原因——子级使用css float浮动
  9. hdu 3183 A Magic Lamp (rmq)
  10. LSTMs和递归神经网络的初学者指南