剑指offer中的面试题替换空格
来源:互联网 发布:和讯黄金软件 编辑:程序博客网 时间:2024/06/06 07:39
替换空格
代码一:
#include <stdio.h>void ReplaceBlank(char string[],int length){if(string==NULL&&length<0){return;}int originalLength=0;int numberOfBlank=0;int i=0;while(string[i]!='\0'){ ++originalLength; ++i;} int newLength=0;i=0;while(string[i]!='\0'){if(string[i]==' '){newLength=originalLength+2;int indexOfOriginal=originalLength; int indexOfNew=newLength;while((i+2)!=indexOfNew){string[indexOfNew--]=string[indexOfOriginal];--indexOfOriginal;}string[i++]='%';string[i++]='2';string[i]='0';originalLength=newLength;}i++;}}int main(){char str[]={"we are happy."}; int h=0; while(str[h]!='\0'){ printf("%c",str[h]);++h;} printf("\n");ReplaceBlank(str,20);h=0;while(str[h]!='\0'){ printf("%c",str[h]);++h;} return 0;}
代码二:
#include <stdio.h>void ReplaceBlank(char string[],int length){if(string==NULL&&length<0){return;}//originalLength为字符串string的实际长度int originalLength=0;int numberOfBlank=0;int i=0;while(string[i]!='\0'){ ++originalLength; if(string[i]==' ') { ++numberOfBlank;}++i;} //newLength为把空格替换成'%20'之后的长度int newLength=originalLength+numberOfBlank*2;if(newLength>length){return;}int indexOfOriginal=originalLength;int indexOfNew=newLength;while(indexOfOriginal>=0&&indexOfNew>indexOfOriginal){if(string[indexOfOriginal]==' '){string[indexOfNew--]='0';string[indexOfNew--]='2';string[indexOfNew--]='%';}else{ string[indexOfNew--]=string[indexOfOriginal];} --indexOfOriginal; } }int main(){ char str[]={"we are happy."}; int h=0; while(str[h]!='\0'){ printf("%c",str[h]);++h;} printf("\n");ReplaceBlank(str,20);h=0;while(str[h]!='\0'){ printf("%c",str[h]);++h;} return 0; }
总结:
这是今天上午在剑指offer中看到的一道面试题,不同解法,效率不同。代码1的时间复杂度O(n^2),因为 剑指offer中只有解题思路,没有核心代码,故代码一为博主自己编写,编程过程中遇到了许多未知的困难,主要是平时编码中未养成良好的编码习惯导致,经过不断的单步调试,一步一步解决了问题,最后对该代码进行了一些简单的测试。如输入的字符串中包含空格(空格位于字符串最前面,位于中间,位于最后面,字符串中有连续多个空格),输入的字符串中没有空格,字符串是个空字符等,代码一全部可得出正确结果。代码二的效率为O(n)。
一点点思考:
代码一与代码二在连续三个空格下,运行正常,结果正常。当测试连续四个空格时,结果与预想不一致。十分疑惑。有知道的朋友请留言,我们一起进步,真诚感谢!!!
0 0
- 剑指offer中的面试题替换空格
- 剑指offer面试题4:替换字符串中的空格
- 剑指offer-->面试题4 替换空格
- 《剑指offer》面试题4 替换空格
- 【剑指offer】面试题4:替换空格
- 【剑指offer】面试题4替换空格
- 剑指offer 面试题4 替换空格
- 剑指Offer:面试题4 替换空格
- 剑指offer-面试题4-替换空格
- 《剑指Offer》面试题4:替换空格
- 【剑指offer】 面试题4: 替换空格
- 剑指offer 面试题4---替换空格
- 剑指offer面试题4-- 替换空格
- 《剑指Offer》面试题:替换空格
- 剑指Offer面试题2:替换空格
- 【剑指offer】面试题4:替换空格
- 剑指Offer:面试题4 替换空格
- 剑指offer-面试题4:替换空格
- 无题 (配音乐)
- Linux ubuntu 14.04 环境下Qt creator中添加OpenCv2.4.9
- 内部类
- listView进行CheckBox的全选、反选
- 基本寄存器简介
- 剑指offer中的面试题替换空格
- C语言模拟实现C++的继承与多态
- Number Complement问题及解法
- LeetCode 516. Longest Palindromic Subsequence
- 小白学前端Day2
- 2017.4.16 级数求和 思考记录
- 七、Springboot依赖于响应状态码的异常处理
- 动态规划 02题
- Nginx+keepalived机制