剑指刷题3

面试题5:替换空格

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

解题思路:遍历替换的时间复杂度为 O ( n 2 ) O(n^2) O(n2),所以简单的遍历肯定是行不通的。在python的解法中有两种,一种是直接使用 r e p l a c e ( ) replace() replace()但是要注意,这个不能直接修改原数组,所以要写另一个变量来引用。另一种解法是用正则表达式,我不是很熟悉,但是后者的运行时间比前者要来得短,本着越短越好的原则,我们用后一种方法。

class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        import re
        ret = re.compile(' ')
        k = ret.sub('%20', s)
        return k

算法思路:就两步,一个是compile,另一个是sub。暂时没理解是啥意思。

面试题6:从尾到头打印链表

题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

解题思路:可以额外使用一个栈来实现,先入后出。

class Solution:
    # 返回从尾部到头部的列表值序列,例如[1,2,3]
    def printListFromTailToHead(self, listNode):
        # write code here
        out = []
        re_out = []
        while listNode != None:
                out.append(listNode.val)
                listNode = listNode.next
        while out :
            re_out.append(out.pop())
        return re_out

算法思路:这里不用考虑额外情况,当空时,输出自然为空。所以直接先将链表装入链中,然后再把链pop出来,导入re_out中,返回即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值