Leetcode 刷题记录 Day6
344. Reverse String
双指针法:
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
l = len(s)
for i in range(len(s) // 2):
s[i], s[len(s) - 1 - i] = s[l - 1 - i], s[i]
return s
541. Reverse String II
没有额外技巧, 只是加了规则
class Solution:
def reverseStr(self, s: str, k: int) -> str:
def reverse(str_list: list):
for i in range(len(str_list)//2):
str_list[i], str_list[len(str_list) - 1 - i] = str_list[len(str_list) - 1 - i], str_list[i]
return str_list
str_list = list(s)
for i in range(len(str_list) // (2 * k) + 1):
str_list[i * 2 * k: i * 2 * k + k] = reverse(str_list[i * 2 * k: i * 2 * k + k])
return ''.join(str_list)
Leetcode 刷题记录 Day7
151. Reverse Words in a String
方法一: Reverse整个string, 再根据word进行reverse
class Solution:
def reverseWords(self, s: str) -> str:
# 去除前后空格
s.strip()
# 反转整个string
s = s[::-1]
# 用split识别每个word, 再次反转, 用' '空格开
return ' '.join(word[::-1] for word in s.split())
方法二: 先split出words, 反转, 加入回string
class Solution:
def reverseWords(self, s: str) -> str:
words = s.split()
for i in range(len(words)//2):
words[i], words[len(words) - 1 - i] = words[len(words) - 1 - i], words[i]
return ' '.join(words)