剑指offer笔记 替换空格

替换空格

知识点:字符串
题目链接

类似题目:
Leetcode笔记 43. 字符串相乘

Leetcode刷题笔记 415. 字符串相加

Leetcode刷题笔记 844. 比较含退格的字符串

Leetcode刷题笔记 387. 字符串中的第一个唯一字符

LeetCode刷题笔记 557.反转字符串中的单词 III

Leetcode刷题笔记 1370. 上升下降字符串

Leetcode刷题笔记 344. 反转字符串

Leetcode刷题笔记 剑指 Offer 20. 表示数值的字符串

Leetcode刷题笔记 321. 拼接最大数

Leetcode刷题笔记 696. 计数二进制子串

Leetcode刷题笔记 290. 单词规律

Leetcode刷题笔记 1002. 查找常用字符

leetcode刷题笔记 面试题 17.13.恢复空格

Leetcode刷题笔记 392. 判断子序列

Leetcode刷题笔记 139. 单词拆分

Leetcode刷题笔记啊 140.单词拆分II

Leetcode刷题笔记 389. 找不同

Leetcode刷题笔记 49. 字母异位词分组

Leetcode刷题笔记 127. 单词接龙

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

解题思路

  1. 把char* 类型转换为string 遍历如果是空格加上 %20 否则加上原来的 在把string变为char* 拷贝回去
  2. 首先找到总共有几个空格 就可以确定最后一个下标在哪里 逆序填入

代码

class Solution {
public:
    void replaceSpace(char *str,int length) {
        string res,s = str;
        for (char x : s) {
            if (x == ' ')
                res += "%20";
            else
                res += x;
        }
        strcpy(str,res.c_str());
    }
};

class Solution {
public:
    void replaceSpace(char *str,int length) {
        if(str == nullptr)
            return ;
        int cnt_0 = 0;
        for(int i = 0; i < length; i++)
            if(str[i] == ' ')
                cnt_0++;
        if(cnt_0 == 0) return ;
        int new_length = length + cnt_0 * 2;
        for(int i = length; i >= 0; i--){
            if(str[i] == ' '){
                str[new_length--] = '0';
                str[new_length--] = '2';
                str[new_length--] = '%';
            }else
                str[new_length--] = str[i];
        }
    }
};

int main()
{
    char *str = "We Are Happy.";
    int length = 0;
    while(str[length] !='\0')
        length++;
    Solution s;
    s.replaceSpace(str,length);
    cout<<str<<endl;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值