アナグラムかどうかの判定問題
文字列の中のアルファベットごとの出現回数を調べる
文字列を辞書順にソートして同じ文字列になればそれはアナグラムである
この2つの方法があり、ひらめくことが出来たが
組の数を数えるところでTLEしてしまった。
この場合はハッシュテーブルを使うのが早いらしい。
pythonでいうdictinaryのこと。
少し面倒なのがdictはキーに対する値が設定されていない場合エラーになる。
そこでキーに対する初期値を与える便利なライブラリがある。
from collections import defaultdict
それが上のやつ。
countDict = defaultdict(int)
みたいに引数に関数を渡すと初期値を設定してくれる。
intはlambda:intという無名関数と同じで0がセットされる。
def func():
return 10
countDict = defaultdict(func)
みたいにすればキーに対する初期値が10になる。
これでACできる。
from collections import defaultdict
N = int(input())
S = [''.join(sorted(list(str(input())))) for i in range(N)]
countDict = defaultdict(int)
ans = 0
for s in S:
ans += countDict[s]
countDict[s] += 1
print(ans)