剑指offer之替换字符串中的空格
2016-04-10 11:47
309 查看
题目:请实现一个函数,把字符串中的每个空格替换成“%20”。
例子:”we are” ====>”we%20are”。
思路:一看到这题直接能想到的方法就是===>从头开始遍历字符串
每遇到空格,换成%20,直到遍历完字符串。但是如果之前的字符串空间有限,则这样做会产生内存覆盖。
法二:前提===>源字符串空间充足。可以一次遍历出字符串有多少个空格,然后计算出新字符串的长度,然后进行替换。
代码如下:
例子:”we are” ====>”we%20are”。
思路:一看到这题直接能想到的方法就是===>从头开始遍历字符串
每遇到空格,换成%20,直到遍历完字符串。但是如果之前的字符串空间有限,则这样做会产生内存覆盖。
法二:前提===>源字符串空间充足。可以一次遍历出字符串有多少个空格,然后计算出新字符串的长度,然后进行替换。
代码如下:
void ReplaceBlank(char str[], int length) { assert(str != NULL &&length > 0); int i = 0; int Oldlength = 0; int blankcount = 0; while (str[i] != '\0') { ++Oldlength; if (str[i] == ' ') { ++blankcount; } ++i; } int Newlength = Oldlength + blankcount * 2; if (Newlength > length) return; int indexOld = Oldlength; int indexNew = Newlength; while (indexOld >= 0 && indexNew > indexOld) { if (str[indexOld] == ' ') { str[indexNew--] = '0'; str[indexNew--] = '2'; str[indexNew--] = '%'; } else { str[indexNew--] = str[indexOld--]; } } } int main() { const int length = 100; char str[length] = "hello world"; ReplaceBlank(str, length); return 0; }
相关文章推荐
- jsp <c:forEach>循环 以及怎么统计变量的总数量
- Scrapy设置之Feeds
- 最流行的编程语言JavaScript能做什么?
- java中OutputStream字节流与字符流InputStreamReader 每一种基本IO流BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWriter,FileInputStream,FileReader,FileWriter,InputStr
- JavaScript实现简单人机五子棋
- 提取多层嵌套JSON类型数据
- Offer题10 字母表示26进制&二进制中1的个数&位运算相关题目
- CSS动画中的贝塞尔
- Fedora 安装chrome浏览器的方法<>
- 文件的inode数据
- Effective STL 条款4
- LeetCode 25 reverse-nodes-in-k-group
- js中实现获取当前超链接
- Brackets安装angularjs插件
- Brackets安装angularjs插件
- Brackets安装angularjs插件
- JQuery笔记
- 【剑指offer系列】 字符串排列___28
- Bootstrap入门
- javascript原生ajax写法分享