替换空格
来源:互联网 发布:sqlserver删除表数据 编辑:程序博客网 时间:2024/06/05 06:28
/*
面试例题4:替换空格 //已上传
请实现一个函数,把字符串中的每个空格替换成“%20”。
例如输入“We are happy”,则输出”We%20are%20happy”。
转换的规则是在‘%’后面跟上ASCII码的两位十六进制的表示,比如空格的ASCII码是32,即16进制的0x20,因此空格被替换成“%20”,
再比如‘#’的ASCII码为35,即十六进制的0x23,被替换成“%23”。
方法一:从前往后替换, 假设字符串的长度为n,对每个空格字符,需要移动后面O(n)个字符,因此对含有O(n)个空格字符的字符串而言总的时间效率是O(n^2);
方法二:从后往前替换,时间复杂度为O(n)。
*/
#if 1#include<stdio.h>#include<iostream>using namespace std;void ReplaceBlank(char string[],int length) //方法2 { if(string == NULL ||length <= 0) return ; int oldLength = 0; int numberOfBlack = 0; int i = 0; while(string[i] != '\0') { ++oldLength; //统计原字符串的个数 if(string[i] == ' ') ++numberOfBlack; // 统计空格的个数 ++i; } int newLength = oldLength +numberOfBlack*2; //newLength 为把空格替换成'%20'之后的长度 if(newLength <length) return ; int indexOfOriginal = oldLength; 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 string[100] = "We are family."; printf("原字符串为:\n"); cout<<string<<endl; int len = strlen(string); ReplaceBlank(string,len); printf("替换后的字符串为:\n"); cout<<string<<endl; return 0;}#endif
阅读全文
0 0
- 空格替换
- 替换空格
- 空格替换
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 空格替换
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- python学习——邮件发送程序
- 基于VC++开发串口通信的方法
- 一个真·菜鸟理解的springmvc工作原理
- leetcode73:Set Matrix Zeroes
- docker私有仓库搭建-啪啪two
- 替换空格
- 使用OpenSSL库的AES加解密
- Java IO流读写文件的几个注意点
- mysql 的备份恢复
- Android studio添加lib的两种方式
- 树的子结构
- iOS 导航栏控制器UINavigationController 、UINavigationBar、UINavigationItem 之间的关系(二)
- dlopen()函数详解[转载]
- 20170519@HashTable