C++笔试题(剑指offer 面试题4 替换字符串中的空格)
来源:互联网 发布:eureka api java 编辑:程序博客网 时间:2024/06/07 21:02
#ifndef F_FIND_WORK_TEST4_REPLACE_BLANK_20171106_JHASKDFJHASF_H_#define F_FIND_WORK_TEST4_REPLACE_BLANK_20171106_JHASKDFJHASF_H_#include <stdio.h>/*剑指offer 面试题替换字符串中的空格将字符串出现的所有空格,替换为%201) 由于空格和%20所占用的字节不同,所以替换之后字符串长度变长2) 由于长度不同,导致每一次替换时,空格之后的字符都要做一次移动,导致消耗时间大因此: 采用双指针,重新申请内存,从末尾开始复制*/BOOL RepalceBlank(char szTest[], int nLen);//测试void F_Test4_ReplaceBlank(){ char szTest[] = "Hello Word, Welcome to my country, China!"; RepalceBlank(szTest, strlen(szTest) + 80);}BOOL RepalceBlank(char szTest[], int nLen){ if((nLen < 0) || (szTest == NULL)) { return FALSE; } //计算长度 和 空格个数 int nOldLen(0); int nBlankNums(0); while (szTest[nOldLen] != '\0') { if (szTest[nOldLen] == ' ') { nBlankNums++; } nOldLen++; } //每一个 %20 比' '多两个字符 int nNewLen = nOldLen + nBlankNums*2; if(nNewLen > nLen) { return FALSE;//没有足够的空间存储替换后的字符串 } //从尾部开始复制元素 while(nNewLen >= 0) { if (szTest[nOldLen] == ' ') { szTest[nNewLen--] = '0'; szTest[nNewLen--] = '2'; szTest[nNewLen--] = '%'; } else { szTest[nNewLen--] = szTest[nOldLen]; } nOldLen--; } return TRUE;}#endif//F_FIND_WORK_TEST4_REPLACE_BLANK_20171106_JHASKDFJHASF_H_
阅读全文
0 0
- C++笔试题(剑指offer 面试题4 替换字符串中的空格)
- 剑指offer面试题4:替换字符串中的空格
- 剑指offer面试题4 替换空格(c)
- 剑指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 面试题4---替换空格
- 剑指offer面试题4-- 替换空格
- 1042. 字符统计(20)——C语言
- HTML卡片经过动画效果
- UCI
- keepalived配置文件详解
- MongoDB学习笔记
- C++笔试题(剑指offer 面试题4 替换字符串中的空格)
- 优化:深度学习优化算法
- Spring boot 五 jdbcTemplate
- BZOJ3110 K大数查询 【线段树 + 整体二分 或 树套树(非正解)】
- 第五届电气学院比赛之XXX——BUCK电路的设计(暂存)
- 欢迎使用CSDN-markdown编辑器
- go
- Linux常用命令
- leetcode练习