相向双指针
两个指针相向而行,一个左指针,一个右指针
- 性质1. left左边是处理好的元素,right右边也是处理好的元素,两个隔板中间是未处理区域
- 性质2. 处理完毕后,return的结果中,每个integer/char的相对位置可能发生变化!!!
1 Reverse
344. Reverse String
# s[::-1], Recursion 解法也行
class Solution(object):
def reverseString(self, s):
n = len(s)
if n <= 1: return s
rs = list(s)
# Two Pointer Swap
l, r = 0, n - 1
while l < r:
rs[l], rs[r] = rs[r], rs[l]
l += 1
r -= 1
return ''.join(rs)
541. Reverse String II
class Solution(object):
def reverseStr(self, s, k):
t = list(s)
# 2*k
for i in xrange(0, len(t), 2*k):
t[i:i+k] = reversed(t[i:i+k])
return ''.join(t)