LeetCode习题:URL化

题目描述:编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)

来源:力扣(LeetCode) 链接

题解一

解题思路:生成一个新字符串,非空格字符直接拼接到新字符串,空格字符 替换为 “%20” 拼接到新字符串

class Solution {
    func replaceSpaces(_ S: String, _ length: Int) -> String {
        var result = ""
        for (index, c) in S.enumerated() {
            if index >= length {
                break
            }
            if c == " " {
                result += "%20"
            } else {
                result += String(c)
            }
        }
        return result
    }
}

题解二

解题思路:利用双指针,首先生成一个字符数组,默认将字符串中所有字符放入该数组,然后一个指针指向length - 1,另一个指针指向数组末尾,遇到非空字符直接复制到数组尾部指针当前位置,指针向前移1位,遇到空字符,数组指针位置开始依次修改为0,2,%,指针向前移3位,最后取数组指针位置(不包含该位置数据)后面的数据即可

class Solution {
    func replaceSpaces(_ S: String, _ length: Int) -> String {
        var array = Array(S)
        var index = array.count - 1
        for i in (0..<length).reversed() {
            let char = array[i]
            if char == " " {
                array[index] = "0"
                array[index - 1] = "2"
                array[index - 2] = "%"
                index -= 3
            } else {
                array[index] = char
                index -= 1
            }
        }
        return String(array[(index + 1)...])
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一,JavaScript的书写格式 1.行内脚本:写在HTML标签内部,通过一个属性节点来添加,不推荐使用,例如“...
    刘远舟阅读 480评论 0 0
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 1,098评论 0 1
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,162评论 0 21
  • OC中的类分为可变和不可变。下表列出了Foundation框架中主要的可变类和不可变类: 种类 不可变类 可变类 ...
    陈_振阅读 562评论 0 0