面试题之替换空格
来源:互联网 发布:北京建筑大学网络 编辑:程序博客网 时间:2024/06/05 05:53
题目:实现一个函数,把字符串中的每个空格替换成“%20”.例如输入"We are happy",则输出“We%20are%20happy”。
对于这道题来说,大多数人都会从前向后遍历字符串,遇到空格时,将后面的字符串后移,这样一来,时间复杂度瞬间到了o(n^2),如果我们首先遍历字符串判断出字符串内由几个空格,然后从后向前遍历,一次放到位。这样一来,时间复杂度瞬间降为o(n).
下面给出代码:
#include<iostream>#include<string>#include<string.h>#include<stdio.h>#include<stdlib.h>using namespace std;#define N 100char* replace_blank(const char* &str){ int len = strlen(str); int cnt = 0; char *string = (char *)str; if(str == NULL || len <= 0){ return NULL; } while(*string){ if(*string == ' '){ cnt++; } string++; } int len2 = len + 2 * cnt + 1; char * string1 = new char[len2]; strcpy(string1,str); len = len + 1; while(len >= 0){ if(string1[len] == ' '){ string1[len2--] = '0'; string1[len2--] = '2'; string1[len2--] = '%'; }else{ string1[len2--] = string1[len]; } len--; } return string1;}int main(int argc,char**argv){ string str; int i = 0; const char * str1; char *str2; int len; int k ; cout << "please input string:"<<endl; getline(cin,str); str1 = str.c_str(); cout << str << endl; len = strlen(str1); str2 = replace_blank(str1); for(i = 0;i < strlen(str2);++i){ cout << str2[i]; } cout << endl; delete str2; return 0;}
其执行结果:
下来我们对内存进行检测,看是否申请空间的都释放了:
0 0
- 面试题之替换空格
- 面试题之替换空格
- 剑指offer面试题之替换空格
- 面试题:替换空格
- 面试题4:替换空格
- 面试题 -- 字符串替换空格
- 面试题4 替换空格
- 面试题4:空格替换
- 面试题4-替换空格
- 面试题4 替换空格
- 面试题四:替换空格
- 面试题4:替换空格
- 面试题4 替换空格
- 面试题4:替换空格
- 面试题2:替换空格
- 面试题4:替换空格
- 面试题4:替换空格
- 面试题5:替换空格
- 在Android Studio中导入github上的项目
- 【ANDROID游戏开发二十四】360°平滑游戏摇杆(触屏方向导航)
- python3不再支持mysqldb 请用pymysql和mysql.connector
- 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
- c++中的日期和时间
- 面试题之替换空格
- C#读取Excel数据到数组
- 大牛们的博客
- 回溯水题——置棋问题
- [单调队列DP] HDU3401 Trade
- C#中的代码书写规范以及命名规范
- Bellman-Ford算法模板
- Android For JNI(一)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序
- 南阳题目364-田忌赛马