【Leetcode_總結】 796. 旋轉字串
阿新 • • 發佈:2018-12-16
Q:
A
的旋轉操作就是將 A
最左邊的字元移動到最右邊。 例如, 若 A = 'abcde'
,在移動一次之後結果就是'bcdea'
。如果在若干次旋轉操作之後,A
能變成B
,那麼返回True
。
示例 1:
輸入: A = 'abcde', B = 'cdeab'
輸出: true
示例 2:
輸入: A = 'abcde', B = 'abced'
輸出: false
思路:利用雙指標,A
的旋轉操作就是將 A
最左邊的字元移動到最右邊,這個操作我就把兩個字串相加,加和之後滑動指標,如果能與B匹配 則True 否則 False 。
class Solution: def rotateString(self, A, B): """ :type A: str :type B: str :rtype: bool """ if len(A) != len(B): return False if A=='' and B=='': return True slow = 0 fast = len(B) A = A + A while(fast < len(A)): if A[slow:fast] == B: return True else: slow+=1 fast+=1 return False
AC記錄:
結果不是很理想,看下優秀示例吧~
class Solution: def rotateString(self, A, B): """ :type A: str :type B: str :rtype: bool """ if A == B: return True elif len(A) != len(B): return False strlen = len(A) for i in range(strlen): B = B[-1]+B[0:strlen-1] if A == B: return True return False
這個思路也很清晰,比較兩個字串,和字串長度,然後移動字串的時候,這個還是有些意思 B = B[-1]+B[0:strlen-1] 這樣就可以在原地移動字串了。