相向双指针

两个指针相向而行,一个左指针,一个右指针

  • 性质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)

2 K Sum系列

results matching ""

    No results matching ""