牛客网C++编程题(二) 替换空格
来源:互联网 发布:淘宝旺旺卖家版2016 编辑:程序博客网 时间:2024/06/10 05:08
题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution {public:void replaceSpace(char *str,int length) {}};
解题思路
- 示例代码表示,传入的是字符串指针(char* str)和字符串数组(int length)大小,返回值为void,即要求我们在指针原指向的内存区域进行替换,而不是开辟新的内存空间
- 如何进行替换,有两种思路:
- 1.从前往后(不推荐)
- "从前往后"遍历并替换,后续操作较繁琐,因为每找到一个空格时,便需要移动空格后的所有的字符。
- 2.从后往前(推荐)
- 因为最终输出的字符串元素要比输入的多,所以计算好输出元素数量后,便"已知"的每个字符元素的位置。从后向前操作,不需要移动空格后所有的字符,操作简单很多
具体步骤
- 先判断输入的字符串和长度值是否有效
- 计算字符串有效长度和空格数量
- 计算最终输出字符串有效长度
- "从后向前"替换字符/空格
代码
// Summary: 请实现一个函数,将一个字符串中的空格替换成“%20”。// 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。// Author: Amusi// Date: 2017-10-28// Reference://思路//1:从前往后插入,这样移动的次数多(不建议)//2:从后往前插入(推荐)#include <iostream>using namespace std;class Solution {public:void replaceSpace(char *str, int length) {// 0. 判断输入字符串字符有效if (str == NULL || length < 1)return;int i = 0;int inputStrLength = 0;// 字符串长度int spaceCounts = 0;// 1. 计算字符串中空格数量while('\0' != str[i]){++inputStrLength;if (' ' == str[i])++spaceCounts;++i;}// 2. 计算最终输出字符串的总长度int outputStrLength = inputStrLength + spaceCounts * 2;if (outputStrLength > length)return;// 3. 从后往前替换while (inputStrLength >=0 && outputStrLength > inputStrLength){if (str[inputStrLength] == ' ')// 遇到空格,就替换{str[outputStrLength--] = '0';str[outputStrLength--] = '2';str[outputStrLength--] = '%';}else{str[outputStrLength--] = str[inputStrLength];}inputStrLength--;// 向后移动}}};int main(){const int length = 100;char inputStr[length] = "ABC CBA I LOVE YOU!";cout << "输入字符串:\t" << inputStr << endl;Solution sl;sl.replaceSpace(inputStr, length);cout << "输出字符串:\t" << inputStr << endl;return 0;}
阅读全文
0 0
- 牛客网C++编程题(二) 替换空格
- 剑指Offer_编程题 替换空格
- 编程题——替换空格
- 牛客网剑指offer编程题--替换空格
- 编程:空格替换Java
- 编程:空格替换Python
- C 空格替换
- 算法学习记录二(C++)--->字符串空格替换
- 算法练习二:替换空格
- 剑指offer(二) 替换空格
- 剑指Offer—编程题4 ( 替换空格)
- 牛客网 | 替换空格
- 牛客网 替换空格
- 牛客网--替换空格
- 第四题 替换空格
- 算法题/替换空格
- (二)剑指Offer之替换空格
- 剑指offer之二---替换空格
- 深入理解Java虚拟机随笔之运行时数据区
- 1000以内的阶乘
- caffe 利用Python API做分类预测,以及特征的可视化
- Java高并发程序设计读书笔记
- hiho 1615 矩阵游戏II [Offer收割]编程练习赛33 Problem A 贪心暴力
- 牛客网C++编程题(二) 替换空格
- JSP
- py基础必过
- 同时加入两个精灵
- LintCode_002_尾部的零
- Linux系统的分区
- 36-经典问题分析3-赋值深拷贝
- 程序员炼造之路——女技术小白的选择
- sprintf 编辑 sprintf指的是字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数。使用sprintf 对于写入buffer的字符数是没有