《剑指offer》第五题(替换空格)
// 替换空格
// 题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,
// 则输出“We%20are%20happy.”。 #include <iostream>
using namespace std; bool replace_space(char* str,const int length)
{
if (str == NULL && length <= )//上来先判断
return false; int true_length = , count = , i = ;
while (str[i] != '\0')//这里要用单引号
{
++true_length;//输入的length是数组最大长度,真实长度有待检测
if (str[i] == ' ')
++count;
++i;
} int new_length = true_length + * count;//算法核心思想,从尾到头复制
if (new_length > length)//要判断原数组长度够长不
return false;//难受,写的时候落下个分号 for (int i = count; i > ;)//当所有空格被替代完后结束
{
if (str[true_length] == ' ')
{
new_length=new_length - ;//如果该复制空格了,先提前移两位位,并赋值“%20”,注意是两位!!
str[new_length] = '%';//这里也要用单引号
str[new_length+] = '';
str[new_length+] = '';//这里也写错过,是+2,不小心写成+1!!
i--;//这个判断条件也写错过,刚才写进for()中了!!
}
else
str[new_length] = str[true_length]; new_length -= ;
true_length -= ; }
return true;
} // ====================测试代码====================
void Test(const char* testName, char str[], int length, const char expected[])
{
if (testName != NULL)
printf("%s begins: ", testName); replace_space(str, length); if (expected == NULL && str == NULL)
printf("passed.\n");
else if (expected == NULL && str != NULL)
printf("failed.\n");
else if (strcmp(str, expected) == )
printf("passed.\n");
else
printf("failed.\n");
} // 空格在句子中间
void Test1()
{
const int length = ; char str[length] = "hello world";
Test("Test1", str, length, "hello%20world");
} // 空格在句子开头
void Test2()
{
const int length = ; char str[length] = " helloworld";
Test("Test2", str, length, "%20helloworld");
} // 空格在句子末尾
void Test3()
{
const int length = ; char str[length] = "helloworld ";
Test("Test3", str, length, "helloworld%20");
} // 连续有两个空格
void Test4()
{
const int length = ; char str[length] = "hello world";
Test("Test4", str, length, "hello%20%20world");
} // 传入nullptr
void Test5()
{
Test("Test5", nullptr, , nullptr);
} // 传入内容为空的字符串
void Test6()
{
const int length = ; char str[length] = "";
Test("Test6", str, length, "");
} //传入内容为一个空格的字符串
void Test7()
{
const int length = ; char str[length] = " ";
Test("Test7", str, length, "%20");
} // 传入的字符串没有空格
void Test8()
{
const int length = ; char str[length] = "helloworld";
Test("Test8", str, length, "helloworld");
} // 传入的字符串全是空格
void Test9()
{
const int length = ; char str[length] = " ";
Test("Test9", str, length, "%20%20%20");
} int main(int argc, char* argv[])
{
Test1();
Test2();
Test3();
Test4();
Test5();//是无效输入
Test6();//是空输入,这俩还不太一样
Test7();
Test8();
Test9(); system("pause");
}
《剑指offer》第五题(替换空格)的更多相关文章
- 《剑指Offer》算法题——替换空格
题目:请实现一个函数,将一个字符串中的空格替换成“ % 20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are % 20Happy. class Solution ...
- 剑指Offer - 九度1510 - 替换空格
剑指Offer - 九度1510 - 替换空格2013-11-29 20:53 题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之 ...
- 剑指offer面试题4 替换空格(java)
注:利用java中stringBuilder,append,length方法很方便的解决字符串问题 /* * 剑指offer 替换空格 * xsf * */ /*开始替换空格的函数,length为原数 ...
- 剑指offer面试题4 替换空格(c)
- 剑指offer第二版-5.替换空格
面试题5:替换空格 题目要求: 实现一个函数,把字符串中的每个空格都替换成“%20”,已知原位置后面有足够的空余位置,要求改替换过程发生在原来的位置上. 思路: 首先遍历字符串求出串中空格的数量,求出 ...
- 剑指Offer:面试题4——替换空格(java实现)
问题描述:请实现一个函数,把字符串中的每个空格替换成"%20". 例如: 输入:"We are happy." 输出:"We%20are%20happ ...
- C++版 - 剑指offer 面试题4: 替换空格 题解
面试题4:替换空格 提交网址: http://www.nowcoder.com/practice/4060ac7e3e404ad1a894ef3e17650423?tpId=13&tqId=1 ...
- 剑指offer(2)替换空格
题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 题目分析 我们如果要替换空格,两步 ...
- 剑指offer【02】- 替换空格(Java)
题目:替换空格 考点:字符串 题目描述: 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. ...
- 剑指Offer(4)——替换空格
题目: 请实现一个函数,把字符串中的每个空格替换成"%20".例如输入“We are happy.”,则输出“We%20are%20happy.”. 思路: 如果按照顺序从前往后依 ...
随机推荐
- typed.js
实现效果,文字逐个输出. 实例代码: <script> $(function(){ $("#head-title").typed({ strings: ["为 ...
- readyState与status
XMLHttpRequest对象(Ajax)的状态码(readystate) 当一个XMLHttpRequest初次创建时,这个属性的值是从0开始,知道接收完整的HTTP响应,这个值增加到4.有五种状 ...
- 【转】SQL Server、Oracle、MySQL和Vertica数据库常用函数对比
SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 1. 绝对值 S:select abs(-1) valu ...
- 关于VS2010的帮助文档更改路径
不小心把MSDN装在系统盘怎么办? 由于自己的C盘空间比较有限,所以经常需要把软件安装在其他磁盘,比如E盘,但是这次重装却不小心就装在C盘了,特遗憾,偶然在网上找到可以更改路径的方法,自己试试,成功了 ...
- python 读不同编码的文本,传递一个可选的encoding 参数给open() 函数
文件的读写操作默认使用系统编码,可以通过调用sys.getdefaultencoding() 来得到.在大多数机器上面都是utf-8 编码.如果你已经知道你要读写的文本是其他编码方式,那么可以通过传递 ...
- 《Hadoop权威指南》(Hadoop:The Definitive Guide) 气象数据集下载脚本
已过时,无法使用 从网上找到一个脚本,修改了一下 #!/bin/bash CURRENT_DIR=$(cd `dirname $0`; pwd) [ -e $CURRENT_DIR/ncdc ] || ...
- Linux服务器---安装apache
Apache安装 1.安装Apache,使用命令“yum install httpd -y” [root@localhost ~]# yum install httpd -y Loaded pl ...
- python模块-json、pickle、shelve
json模块 用于文件处理时其他数据类型与js字符串之间转换.在将其他数据类型转换为js字符串时(dump方法),首先将前者内部所有的单引号变为双引号,再整体加上引号(单或双)转换为js字符串:再使用 ...
- Quartz框架调用Demo
Quartz框架调用Demo 任务调度在JAVA应用程序中运用的十分普遍,掌握QUARTZ是必备的技能; 官网:http://www.quartz-scheduler.org/ 下载最新1.80资源包 ...
- 作为从业人员,如果一定要学一门新的编程语言,那么它一定是c++
作为从业人员,如果一定要学一门新的编程语言,那么它一定是c++. 无论各种编程语言排行榜如何变化,什么语言最赚钱,想成为真正的程序员,那么c/c++是必修课,因为几乎所有的底层都是c/c++编写的,各 ...