Leetcode刷题10.21(二)——反转字符串 & 反转字符串II
leetcode 344 反转字符串
没有什么特别的,双指针遍历交换。
class Solution: def reverseString(self, s: List[str]) -> None: """ Do not return anything, modify s in-place instead. """ if len(s)<2: return L = 0 R = len(s)-1 while L < R: s[L], s[R] = s[R], s[L] L += 1 R -= 1
leetcode 541 反转字符串II
奇怪的要求.jpg
简单来说就是将原来的字符串分成几组,每组只交换前面的一半字符。需要注意的是最后一段字符的处理。有两种情况:1.最后一段所有字符均要反转 2.只有前半部分需要反转。
class Solution: def reverseStr(self, s: str, k: int) -> str: s = list(s) # 字符串是不可变对象,索引赋值需要新建一个列表 for i in range(0,len(s),2*k): L = i R = i+k if R > len(s): # 此处判断一下最后一段的末尾是否在反转范围内 R = len(s) s[L:R] = reversed(s[L:R]) return ''.join(s)
需要注意的就是此题跟上一题不同,给出的输入是一个字符串,需要先转换成列表再转换回字符串。