LeetCode 第567題 Permutation in String【滑動視窗】(Java)
原題地址:https://leetcode.com/problems/permutation-in-string/
要求
給定兩個字串s1和s2,寫一個函式,如果s2包含了s1的排列組合(permutation,就是字元長度跟s1一樣,字元頻率一樣,但是字元出現的位置一樣),則返回true。換句話說,第一個字串的排列組合,是第二個字串的子串。
例 1:
輸入為: s1 = “ab” s2 = “eidbaooo”
輸出為: True
例 2:
輸入為:s1= “ab” s2 = “eidboaoo”
輸出為:False
注意:
輸入僅包含小寫字母,字串長度範圍是[1,10000]。
仔細閱讀題目,你會發現,這不就是第438題麼?排列組合(permutation)和變位詞(anagrams)在這裡不是一回事麼?所以,我的解決方法很簡單。直接把438題的函式findAnagrams實現粘到第567題的類裡面,然後再第567題的函式裡面呼叫438題的函式即可。如果你想多練習一下這個思路,重新寫一遍也是可以的。
本題程式碼地址為:https://github.com/tinyfool/leetcode/tree/master/src/p0567
本文假設你對滑動視窗概念有所瞭解,如果你對滑動視窗的概念不夠了解,請參看我介紹滑動視窗的文章,裡面有詳細的解釋 。