字符串的替换空格问题
来源:互联网 发布:淘宝的鹰眼系统 编辑:程序博客网 时间:2024/06/05 07:58
题目:把字符串中的空格替换成%20,例如 “we are happy”替换成“we%20are%20happy”;
思路分析:如果从头遍历,遇到空格就替换,则后面整个串都要移动,这样下来,时间复杂度就会很大,那么,为何不考虑从后往前替换呢。
#include<stdio.h>#include<malloc.h>//把空格替换成%20//两种方法:1、创建一个新的数组//2、在原有数组上进行更改char* ReplaceBlank1(char *string){ if(string == NULL) { return NULL; } int length = 0; int black = 0; int i = 0; while(string[i] != '\0') { length++; if(string[i] == ' ') { black++; } i++; } char *tmp = (char *)malloc(sizeof(char)*(length+black*2)+1); i = 0; int j = 0; for(;i<=length;i++) { if(string[i] == ' ') { tmp[j] = '%'; tmp[++j] = '2'; tmp[++j] = '0'; } else { tmp[j] = string[i]; } j++; } return tmp;}void ReplaceBlank2(char *string,int length){ if(string == NULL || length<0) { return; } int old = 0; int black = 0; int i = 0; while(string[i] != '\0') { old++; if(string[i] == ' ') { black++; } i++; } int newlen = old + black*2 +1;//得到新的串的大小 for(int j = old+1;j>=0;--j) { if(string[j] != ' ') //如果不等于空格,则一直插入即可 { string[newlen--] = string[j]; } else //如果等于空格,就进行替换 { string[newlen--] = '0'; string[newlen--] = '2'; string[newlen--] = '%'; } }}int main(){ char arr[50] = "We are student. "; int length = sizeof(arr)/sizeof(arr[0]); char *tmp = ReplaceBlank1(arr); ReplaceBlank2(arr,50); printf("%s\n",arr); printf("%s\n",tmp); free(tmp);}总结:学会找到最简单的办法,时间和空间复杂度越小越好咯。
阅读全文
0 0
- 字符串的替换空格问题
- 字符串空格替换问题
- 字符串的空格替换
- 字符串数组空格的替换
- 字符串的空格替换算法
- 剑指Offer之字符串空格替换问题
- 字符串的空格替换(字符串知识)
- 【字符串】字符串替换空格
- 字符串替换空格的简单算法
- 【笔试】22、替换字符串的空格
- 【剑指offer】字符串的空格替换
- 字符串替换空格的两种方法
- 用stringbuffer替换字符串的空格
- 【剑指offer】字符串中空格的替换
- java替换字符串中所有的空格
- 字符串替换空格的最优算法
- 剑指Offer-5:替换字符串的空格
- 字符串所有连续的空格替换为一个空格
- QT设置字体与颜色
- php接口文件(token)
- Fragment启动生命周期
- 理解协程的运行流程
- Objective -C
- 字符串的替换空格问题
- 实例3-2 List Leaves
- 用户填表有大量数据的数据提交解决方式
- [ASP.NET]内置对象简介
- WPF DataGrid DataGridTemplateColumn 列头checkbox如何在代码中取消选择
- QT与数据库的链接
- myeclipse发布项目到自定义文件夹
- Pjax的学习使用
- 剑指offer题解C++【24】二叉树中和为某一值的路径