字母異位詞

2021-10-11 15:51:06 字數 2395 閱讀 8477

字母異位詞分組

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。

示例:

輸入:["eat", "tea", "tan", "ate", "nat", "bat"]輸出:

[["ate","eat","tea"],

["nat","tan"],

["bat"]

]

說明:

方法一:排序陣列分類

維護乙個對映,key為字串中字元的最小字典序,value為排列不同的字串

public list> groupanagrams(string strs) 

map.get(string.valueof(chars)).add(s);

}return new arraylist<>(map.values());

}

時間複雜度:o(nklogk),其中 n 是 strs 的長度,而 k 是 strs 中字串的最大長度

方法二:按計數分類

根據每個字串中字母出現的次數構造字串,作為key

public list> groupanagrams(string strs) 

stringbuilder sb = new stringbuilder();

for (int count : counts)

string key = sb.tostring();

if (!map.containskey(key))

map.get(key).add(s);

}return new arraylist<>(map.values());

}

時間複雜度o(nk)

找到字串中所有字母異位詞

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

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

說明:

示例 1:

輸入:s: "cbaebabacd" p: "abc"輸出:[0, 6]解釋:

起始索引等於 0 的子串是 "cba", 它是 "abc" 的字母異位詞。

起始索引等於 6 的子串是 "bac", 它是 "abc" 的字母異位詞。

示例 2:

輸入:s: "abab" p: "ab"輸出:[0, 1, 2]解釋:

起始索引等於 0 的子串是 "ab", 它是 "ab" 的字母異位詞。

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

起始索引等於 2 的子串是 "ab", 它是 "ab" 的字母異位詞

方法一:暴力(超時)

依次判斷s中所有長度和p的長度相同的子串和p是否是異位詞

public listfindanagrams(string s, string p) 

arrays.sort(temp);

if (arrays.tostring(temp).equals(arrays.tostring(pchars)))

}return ans;

}

方法二:滑動視窗

先用乙個map存在p中字母存在的次數,再用乙個map存滑動視窗中字母存在的次數

滑動視窗指標i,j,每次j向右移動,更新j對應字母出現的次數,如果比p中map的大,i指標向右移動,直到不比map大,i在移動過程中也要更新次數,如果視窗大小和p的長度相等,說明找到了乙個滿足條件的值

public listfindanagrams(string s, string p) 

int i = 0, j = 0;

int smap = new int[26];

while (j < s.length())

if (j - i == p.length())

}return ans;

}

字母異位詞

描述 給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的字母異位詞。示例 1 輸入 s anagram t nagaram 輸出 true 示例 2 輸入 s rat t car 輸出 false 思路和 思路1 雜湊 class solution int lens s.size in...

字母異位詞分組

超出時間限制 依次遍歷陣列中每乙個字串,與list中每乙個templist中的第乙個進行對比,如果長度不相等即為不合格,如果list走到了結尾,字串肯定不包含與list中,新增成為list中新的一員。如果與templist中一樣則為新增為templist中一員 但是超出時間限制 public lis...

字母異位詞分組

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 思路 遍歷string陣列,對每個string排序,然後以鍵形式存入雜湊表中,雜湊表鍵為排序後的stri...