タイトル
一緒に文字列配列、異所性の単語文字を考えます。異所性ワード文字が同じ文字を指しますが、別の文字列に配置されています。
例:
输入:[、 "お茶を" "食べる"、 "日焼け"は、 "食べた"、 "NAT"、 "バット"]、
输出:
[
[、]、 "食べる"、 "お茶を" "食べた"
、[ "NAT" "日焼け"]、
[ "バット"]]
説明:
すべての入力は小文字です。
考慮されていなかった答えの順番。
ヒント:
最も一般的な方法のタイムアウト(彪の涙)と非常に大きな配列にleetcode最後から二番目のテストケースでは、あなたは破るために奇妙な変態トリックを使用する必要があります。2つのエントリポイントがあります。
もしおよび2つの文字列が異所性文字の単語あるソート文字列に等しい場合にのみ。
"お茶" - > "AET";「食べる " - >" AET」
"不良" - > "oopr";」ROPO「 - > "oopr"
"と" - > "ADN"
「広告」 - >「広告」
そしてその文字カウント(各文字の出現数)が同じである場合にのみ場合は、2つの文字列が異所性文字の単語です。
思考
計算時間を短縮するために、最初のアイデア、およびハッシュテーブルによります。
Pythonの「辞書」を使用してテーブル・パケットを保持し、キー(鍵)は、サブパケットインデックスのソートされた値(値)の文字列であります
結果は、= [
[、]、 "食べる"、 "お茶を" "食べた"
、]、[ "NAT" "たん"
] [ "コウモリ"]グループ= { "AET":0、 "ANT" 1 "ABT":2}
たびにパケットがソートに対応する文字列に追加するか、新しいパケットを作成しています
python3達成
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
result=[]
# key为排序后单词,value为result的分组下标
group={}
for i in range(len(strs)):
temp_list=list(strs[i])
temp_list.sort()
sorted_string="".join(temp_list)
if sorted_string in group:
result[group[sorted_string]].append(strs[i])
else:
group[sorted_string]=len(group)
result.append([strs[i]])
return result
実行(Do)経験の問題
あなたは15分を考えることができない場合は、すべての後に...直接の回答を参照するには、特に素晴らしい方法である、たとえ実装のアイデアはなく、一日の大半...