zoukankan      html  css  js  c++  java
  • 程序员面试金典 <Cracking the Coding Interview> 面试题 01.03. URL化 配图

    地址 https://leetcode-cn.com/problems/string-to-url-lcci/solution/

    URL化。编写一种方法,将字符串中的空格全部替换为%20
    假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)   示例
    1: 输入:"Mr John Smith ", 13 输出:"Mr%20John%20Smith" 示例 2: 输入:" ", 5 输出:"%20%20%20%20%20"   提示: 字符串长度在 [0, 500000] 范围内。

    解答

    算法1
    (逆序枚举) O(n) 
    看题意 题目似乎有个隐藏条件
    不需要额外的空间 只在输入的字符串中进行计算
    因为字符串的长度实际比输入的字符要大
    那么我们可以倒序计算
    两个指针分别指向字母和字符串的最末尾,
    如果是其他字母则照样复制 两指针分别向前移动
    如果是空格则在字符串末尾添加%20三个字符,向前移动三位,字母的指针则向前移动一位

    class Solution {
    public:
        string replaceSpaces(string S, int length) {
            int fillIdx = S.size()-1;
            int i = 0;
            for ( i = length-1; i >= 0; i--) {
                if (S[i] == ' ') {
                    S[fillIdx] = '0';
                    S[fillIdx - 1] = '2';
                    S[fillIdx - 2] = '%';
                    fillIdx -= 3;
                }
                else {
                    S[fillIdx] = S[i];
                    fillIdx--;
                }
            }
            S = S.substr(fillIdx+1);
            return S;
        }
    };
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    Nginx 均衡负载
    今天不知道写啥
    ios 多线程管理中的关键点
    iOS 开发中 想对于方便的MBProgressHUD
    UitableView 中原创动态高度计算
    iOS 开发中常见的错误日志处理
    设计模式之二-Proxy模式
    设计模式之一-Stratrgy模式
    core dumped问题查找以及使用gdb、QT下gdbserver使用
    ssh、scp的使用,以及shell脚本解决scp需要输入密码的问题
  • 原文地址:https://www.cnblogs.com/itdef/p/14459484.html
Copyright © 2011-2022 走看看