344.反转字符串
双指针相向swap
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
left, right = 0, len(s) - 1
while left < right:
s[left], s[right] = s[right],s[left]
left += 1
right -= 1
541. 反转字符串II
自己实现:
class Solution:
def reverseStr(self, s: str, k: int) -> str:
left, right = 0, 2 * k
res = ''
while right < len(s):
mid = (left + right) // 2
res = res + s[left: mid][::-1] + s[mid: right]
left = right
right += 2 * k
right = len(s)
if right - left <= k:
res += s[left:][::-1]
else:
res += s[left: left + k][::-1] + s[left + k:]
return res
利用切片性质(切片索引超限返回空)可以更优雅实现:
class Solution:
def reverseStr(self, s: str, k: int) -> str:
p = 0
while p < len(s):
s = s[:p] + s[p: p + k][::-1] + s[p + k:]
p += 2*k
return s
卡码网:54.替换数字
这题Python也没法原地,再用切片吧。
import sys
def substitution(s):
p = 0
while p < len(s):
if ord(s[p]) - ord('0') <= 9 and ord(s[p]) - ord('0') >= 0:
s = s[0: p] + 'number' + s[p + 1:]
p += 5
p += 1
return s
if __name__ == '__main__':
s = input()
print(substitution(s))

被折叠的 条评论
为什么被折叠?



