http://www.topcoder.com/stat?c=problem_statement&pm=11293&rd=14425
珠玉のプログラミングか何かの本でほぼ同じ問題を見た記憶があります。
横にソートした後、UniqしてやればOK。
下記では縦にソートして異なる文字列の数を数えています。
横方向にソートするところ、いったんchar[]にしないとできないんですかね。。
using System; using System.Collections.Generic; using System.Text; public class AnagramFree { public int getMaximumSubset(String[] S) { for (int i = 0; i < S.Length; i++) { char[] chr = S[i].ToCharArray(); Array.Sort(chr); S[i] = new String(chr); } Array.Sort(S); int cnt = 1; for (int i = 1; i < S.Length; i++) { if (!S[i].Equals(S[i - 1])) cnt++; } return cnt; } }