Cracking the coding interview--Q1.5
题目
原文:
Write a method to replace all spaces in a string with ‘%20’.
译文:
写一个函数,把字符串中所有的空格替换为%20 。
解答
简单题。先遍历一次字符串,得到空格个数,进而得到将空格转换成%20后的串长度 (每个空格替换为%20需要增加2个字符,x个空格增加2x个字符)。 然后从后向前依次对空格进行替换,非空格原样拷贝。如果原串有足够大的空间, 则替换过程直接在原串上进行, 因为从后向前替换的过程中,新串用到的空间一定是旧串不需要的空间,看图示:
旧字符串:i am hawstein 旧串索引: p 新字符串:i%20am%20hawstein 新串索引: q
如果原串的空间不够大,或是就直接是字符串长度加1(不要忘了'\0'), 那么就新开一个串来保存替换后的结果。
代码如下:
#include <iostream> #include <cstring> using namespace std;char* replace1(char *c){if(c == NULL) return NULL;int len = strlen(c);if(len == 0) return NULL;int cnt = 0;for(int i=0; i<len; ++i){if(c[i] == ' ')++cnt;}char *cc = new char[len+2*cnt+1];int p = 0;for(int i=0; i<len; ++i){if(c[i] == ' '){cc[p] = '%';cc[p+1] = '2';cc[p+2] = '0';p += 3;}else{cc[p] = c[i];++p;}}cc[p] = '\0';return cc; }void replace2(char *c){if(c == NULL) return;int len = strlen(c);if(len == 0) return;int cnt = 0;for(int i=0; i<len; ++i){if(c[i] == ' ')++cnt;}int p = len + 2*cnt;c[p--] = '\0';//the space must be allocated first.for(int i=len-1; i>=0; --i){if(c[i] == ' '){c[p] = '0';c[p-1] = '2';c[p-2] = '%';p -= 3;}else{c[p] = c[i];--p;}} } int main(){const int len = 100;char c[len] = "";cout<<replace1(c)<<endl;replace2(c);cout<<c<<endl;return 0; }
Cracking the coding interview--Q1.5相关推荐
- Cracking the Coding Interview Q1.2
2019独角兽企业重金招聘Python工程师标准>>> My Solution: #include<stdio.h> #include<string.h>/* ...
- [Free] Cracking the Coding Interview 6th Download
[Free] Cracking the Coding Interview 6th Download 推荐给有梯子的童鞋们! https://www.pdfdrive.com/cracking-the- ...
- Cracking the coding interview
转自:http://hawstein.com/posts/ctci-solutions-contents.html Cracking the coding interview--问题与解答 March ...
- 经典算法题目:Cracking the coding interview 问题与解答
Cracking the coding interview--问题与解答 March 14, 2013 作者:Hawstein 出处: http://hawstein.com/posts/ctci-s ...
- 渣基础:比照Hawstein学Cracking the coding interview(1)
<C++ Primer 第五版>书实在是太长,太厚了.总是看了十几页就看累了,坚持不了多久,想了想还是别勉强自己,决定把它当工具书查看,或者积累足够的C++经验后再翻阅一遍. 目前的打算是 ...
- 渣基础:比照Hawstein学Cracking the coding interview(3)
作者:Hawstein 出处:http://hawstein.com/posts/1.4.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Common ...
- 渣基础:比照Hawstein学Cracking the coding interview(2)
作者:Hawstein 出处:http://hawstein.com/posts/1.4.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Common ...
- [Cracking the Coding Interview] 4.4 Check Balanced
Implement a function to check if a binary tree is balanced. For the purpose of this question, a bala ...
- 《Cracking the Coding Interview》——第18章:难题——题目11
2014-04-29 04:30 题目:给定一个由'0'或者'1'构成的二维数组,找出一个四条边全部由'1'构成的正方形(矩形中间可以有'0'),使得矩形面积最大. 解法:用动态规划思想,记录二维数组 ...
- 《Cracking the Coding Interview》——第6章:智力题——题目5
2014-03-20 01:08 题目:扔鸡蛋问题.有一个鸡蛋,如果从N楼扔下去恰好会摔碎,低于N楼则不碎,可以继续扔.给你两个这样的鸡蛋,要求你一定得求出N,怎么扔才能减少最坏情况下的扔的次数? 解 ...
最新文章
- dede 表单必填_织梦dedecms自定义表单选项必填怎么修改
- linux查看日志的几种命令,Linux查看日志三种命令(转载)
- 手机zip模拟器_【教程】萌新手机krkr2模拟器运行教程
- VTK:可视化之DistanceToCamera
- php多进程 写入文件_PHP多进程中使用file_put_contents安全吗?
- HDOJ树形DP专题之Centroid
- Redis:缓存问题之数据不一致(更新数据库时 主动更新)
- job用法 Java_Web App使用Quartz实现java schedule job
- Knockout应用开发指南 监控属性(Observables)
- 应用时间序列案例-基于R语言
- js批量下载图片并压缩打包
- codeforces Star sky(二维前缀和)
- 【亚伦博客】《蝙蝠侠前传2:黑暗骑士》里发生了什么
- 解决Win10能登陆QQ却无法打开网页问题
- 模型无关的全局特征依赖分析方法 I ——部分依赖曲线分析与条件依赖曲线分析
- 为什么C语言长盛不衰,永不会过时?
- HDU - 胜利大逃亡(搜索)
- Android开发AndroidStudio与eclipse安装与使用
- mysql数据库设计与应用答案智慧树_智慧树_MySQL数据库设计与应用_答案全部
- 软件开发、系统定制、小程序等怎么报价?
热门文章
- 2020测试机械硬盘软件,YDT 3825-2020面向互联网应用的机械硬盘测试规范.pdf
- springboot templates读取不到_整合spring mvc + mybatis,其实很简单,spring boot实践(5)
- TS和JS相对比的优势
- 点击php文件显示下载文件,求助 为什么编的下载文件代码,打开后下的全是php文件...
- 骄傲的代价_JAVA
- 【C++】38.类成员变量声明为 对象与指针的区别
- Stanford机器学习笔记-6. 学习模型的评估和选择
- Spring IOC 容器源码分析 - 获取单例 bean
- 31 天重构学习笔记索引
- 国内大学毕业论文LaTeX模板集合