打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
剑指offer(C++)-JZ5:替换空格(算法-其他)

作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

题目描述:

请实现一个函数,将一个字符串s中的每个空格替换成“%20”。

例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

数据范围:0≤len(s)≤1000 。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。

示例:

输入:

"We Are Happy"

返回值:

"We%20Are%20Happy"

解题思路:

本题考察算法思维。两种解题思路:

1)拼接法

       进行一次遍历,如果是字符就将其添加至新字符串后面,如果是空格,就把%20添加到新字符串后面,最后就拼接完成了。

2)替换法

       进行一次正序或倒序遍历;用find_first_of或find_last_of函数寻找空格,找到后就将空格位置替换为%20;然后继续寻找,如果找完没有空格,就返回字符串;理论上最多执行size次操作,但实际次数等于空格数量。

测试代码:

1)拼接法

class Solution {
public:
    // 替换空格
    string replaceSpace(string s) {
        int size = int(s.size());
        string result;
        for(int i = 0; i < size; ++i){
            if(s[i] == ' '){
                result += "%20";
            }
            else{
                result += s[i];
            }
        }
        return result;
    }
};

2)替换法

class Solution {
public:
    // 替换空格
    string replaceSpace(string s) {
        int size = int(s.size());
        for(int i = 0; i < size; ++i){
            int idx = s.find_last_of(' ');
            if(idx == -1){
                return s;
            }
            s.replace(idx, 1, "%20");
        }
        return s;
    }
};
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【算法千题案例】每日LeetCode打卡——79.键盘行
​LeetCode刷题实战186:翻转字符串里的单词 II
短网址的算法_Java
用JAVA刷算法的常见问题及解决之道 系列(一)
Base64编码详解
周期串问题(二)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服