LeetCode——替换空格、从尾到头打印链表

替换空格

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

示例:

输入:s = "We are happy."
输出:"We%20are%20happy."

限制:

0 <= s 的长度 <= 10000

代码:

def replaceSpace(self, s: str)->str:
	res = []
	for c in s:
		if c == ' ': res.append("%20")
		else: res.append(c)
	return  "".join(res)

时间复杂度O(n),因为用到额外列表,空间复杂度O(n)。

或者:

def replaceSpace(self, s: str)->str:
	s = s.split(' ')
	return '%20'.join(s)

从尾到头打印链表

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例:

输入:head = [1,3,2]
输出:[2,3,1]

限制:

0 <= 链表长度 <= 10000

代码:

# Definition for singly-linked list.
# class ListNode:
#   def __init__(self, x):
#   	self.val = x
#       self.next = None

def reversePrint(self, head: ListNode) -> List[int]:
    stack = []
    while head:
        stack.append(head.val)
        head = head.next
    return stack [::-1]

利用列表模拟栈,将链表里的元素依次入栈,再依次尾部出栈就可以了。
本题要求用列表返回每一个值,用一个倒序的切片即可。
时间复杂度O(n),空间复杂度O(n)。

猜你喜欢

转载自blog.csdn.net/ewfwewef/article/details/108745789