剑指Offer:面试题4 替换空格
2015-09-09 10:45
375 查看
#include<stdio.h> /*剑指Offer:面试题4 替换空格*/ /* 题目:请实现一个函数,把字符串中的每一个空格替换成“%20” 例如:当字符串string内容为:"hello world !"时,执行完函数后 string内容为:“hello%20world%20!” 算法思想: 1.用“%20”替换‘ ’后,字符串长度必然发生变化。 因此,首先应遍历一边字符串,统计原字符串中空格的个数,从而计算出 变换后的字符串字符个数。 2.然后采用从后向前的方法去遍历字符串,如果是空格则替换成要替换的字符,并将其 放进重新计算的字符串长度的数组内,如果不是空格则放入重新计算的字符串长度的数组内。 */ void replaceBank(char string[], int length) { if (string == NULL && length <= 0) return; int orignalLength = 0; int blankSize = 0; int i = 0; while (string[i] != '\0') { orignalLength++; if (string[i] == ' ') { blankSize++; } i++; } int newLength = orignalLength + blankSize * 2; if (newLength > length) { return; } while (orignalLength > 0 && newLength > orignalLength) { if (string[orignalLength] == ' ') { string[newLength--] = '0'; string[newLength--] = '2'; string[newLength--] = '%'; } else { string[newLength--] =string[orignalLength]; } orignalLength--; } } void main() { const int length = 100; char string[length] = "hello world !"; replaceBank(string, length); printf("%s \n",string); }
相关文章推荐
- 一个关于if else容易迷惑的问题
- 一道sql面试题附答案
- C# 超高面试题收集整理
- 人人网javascript面试题 可以提前实现下
- PHP中设置一个严格30分钟过期Session面试题的4种答案
- 据说是雅虎的一份PHP面试题附答案
- php牛逼的面试题分享
- 一套比较完整的javascript面试题(部分答案)
- 小米公司JavaScript面试题
- 超级全面的PHP面试题整理集合第1/2页
- 5个实用的shell脚本面试题和答案
- PHP经典面试题集锦
- 8个PHP数组面试题
- PHP中提问频率最高的11个面试题和答案
- 用PHP解决的一个栈的面试题
- 几道坑人的PHP面试题 试试看看你会不会也中招
- 5个JavaScript经典面试题
- Java高级面试题小结
- JAVA实现链表面试题
- 探讨Java中最常见的十道面试题(超经典)