lintcode-212-空格替换

看到18%通过率的简单题,发现事情没那么简单。

18%? interesting

题目

描述:
设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。
你的程序还需要返回被替换后的字符串的长度。
注意事项:
如果使用 Java 或 Python, 程序中请用字符数组表示字符串。

样例:
对于字符串"Mr John Smith", 长度为 13
替换空格之后,参数中的字符串需要变为"Mr%20John%20Smith",并且把新长度 17 作为结果返回。

总结

踩到的坑

  • 以为是简单的字符串替换
  • %20就是用来表示空格的,参见这里
  • 只返回新字符串的长度,并检查原字符串
  • 字符串以列表的形式给出,并不能使用split
  • 不清楚检查机制,但经过多次试错发现应该是以id(string)来检查原来的字符串string的,所以不能生成新的字符串再赋值
  • 注意特殊值

思路

  • 既然给出列表,则使用 append() 和 pop() 保证原地操作
  • 传入的原长度 length 用于检测
  • pop() 默认参数为 -1 即从队尾出列,可使用 pop(0) 从队头出列
  • 为保证长度正确以及避免编译器不认,分三次append

代码

class Solution:
    # @param {char[]} string: An array of Char
    # @param {int} length: The true length of the string
    # @return {int} The true length of new string
    def replaceBlank(self, string, length):
        # Write your code here
        if string is None:
            return 0
        count = length
        for s in string:
            if count != 0:
                count -= 1
                if s != ' ':
                    string.append(s)
                else:
                    string.append('%')
                    string.append('2')
                    string.append('0')
        for i in range(length):
            string.pop(0)
        return len(string)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4
  • 阿开生在农村,相貌普通,自小有些口吃,一着急便说不清楚话。但大家都知道,阿开是个实诚善良的小伙子。在那个年代,与许...
    檐上鸟阅读 552评论 0 0
  • 这类标题的文章,是不是很熟悉?你是不是冲着标题进来的? 类似这样的标题党文章,你应该看过很多,多数是泛泛而谈,没啥...
    IDO老徐阅读 3,210评论 6 24
  • 拥有你是我的幸福,天长地久是我的梦想,梦想被生活磨光了棱角,剩下了满满的都是你。 我想要这个世界上...
    一个不想醒的梦阅读 415评论 0 0
  • 1.干一件事,不要停下来! 2.打开一扇门,打开一个世界! 3.同样一个小时,获得多少在于你对你对自己的界定!
    风清杨阅读 178评论 0 1