438 找出字符串中所有的變位詞

給定一個字符串 s 和一個非空字符串 p,找到 s 中所有是 p 的字母異位詞的子串,返回這些子串的起始索引。

字符串只包含小寫英文字母,並且字符串 s 和 p 的長度都不超過 20100。

說明:

字母異位詞指字母相同,但排列不同的字符串。
不考慮答案輸出的順序。
示例 1:

輸入:
s: "cbaebabacd" p: "abc"

輸出:
[0, 6]

解釋:
起始索引等於 0 的子串是 "cba", 它是 "abc" 的字母異位詞。
起始索引等於 6 的子串是 "bac", 它是 "abc" 的字母異位詞。
1
2
3
4
5
6
7
8
9
示例 2:

 

 

輸入:
s: "abab" p: "ab"

輸出:
[0, 1, 2]

解釋:
起始索引等於 0 的子串是 "ab", 它是 "ab" 的字母異位詞。
起始索引等於 1 的子串是 "ba", 它是 "ab" 的字母異位詞。
起始索引等於 2 的子串是 "ab", 它是 "ab" 的字母異位詞。
 

class Solution(object):
    def findAnagrams(self, s, p):
        """
        :type s: str
        :type p: str
        :rtype: List[int]
        """
        result=[]
        len_p,len_s=len(p),len(s)

        p1=sorted(list(p))
        for i in range(len_s-len_p+1):
            q=s[i:i+len_p]
            q1=sorted(list(q))
            if p1==q1:
                result.append(i)
        return result

f=Solution()
print(f.findAnagrams("abcedbca","abc"))



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章