关闭

《剑指offer》字符串中的字符替换

标签: 剑指offer字符串中的字符替换
134人阅读 评论(0) 收藏 举报
分类:

一、题目描述

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

二、输入描述

char *str :字符串
int length : 字符串的长度

三、牛客网提供的类框架

//length为牛客系统规定字符串输出的最大长度,固定为一个常数
class Solution {
public:
    void replaceSpace(char *str,int length) {

    }
};

四、解题思路

分两步
第一:先查找字符数组中有多少个空格,假设有n个空格。增加替换后数组的长度,因为一个空格用“%20”三个字符去替换,所以每个空格就会是数组增加2ge位置。

第二:字符数组从后面开始查找,如果遇到空格就使用“0”“2”“%”去替换,否则位置直接后移。

五、代码

//length为牛客系统规定字符串输出的最大长度,固定为一个常数
class Solution {
public:
    void replaceSpace(char *str,int length) {
        int newLength = length;
        for(int i = 0; i < length; i++)
        {
            if(str[i] == ' ') newLength += 2;
        }

        int newIndex = newLength - 1;
        for(int i = length - 1; i >= 0; i--)
        {
            if(str[i] == ' ')
            {
                str[newIndex--] = '0';
                str[newIndex--] = '2';
                str[newIndex--] = '%';
            }
            else
            {
                str[newIndex--] = str[i];
            }
        }
    }
};
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:52961次
    • 积分:1270
    • 等级:
    • 排名:千里之外
    • 原创:75篇
    • 转载:0篇
    • 译文:0篇
    • 评论:15条
    友情链接
    最新评论