void Main() | |
{ | |
Func<string, string, bool> anagram = (first, second) => | |
{ | |
if (first == null || second == null) return false; | |
if (first.Length != second.Length) return false; | |
var dic1 = new Dictionary<char, int>(); | |
foreach (var item in first) | |
{ | |
int i; | |
if (dic1.TryGetValue(item, out i)) | |
{ | |
dic1[item] = i + 1; | |
} | |
else | |
{ | |
dic1[item] = 1; | |
} | |
} | |
foreach (var item in second) | |
{ | |
int i; | |
if (dic1.TryGetValue(item, out i)) | |
{ | |
dic1.Remove(item); | |
} | |
else | |
{ | |
return false; | |
} | |
} | |
return true; | |
}; | |
var sw = Stopwatch.StartNew(); | |
foreach (var item in Enumerable.Range(0, 100000)) | |
{ | |
anagram(" ", " "); | |
anagram("1", "1"); | |
anagram("eros", "rose"); | |
anagram("eros", "lose"); | |
anagram("", "rose"); | |
anagram("eros", "rosesssss"); | |
anagram("bab", "aba"); | |
anagram(" ", " "); | |
anagram(null, null); | |
anagram(null, ""); | |
anagram("hoge", null); | |
anagram("1", "2"); | |
} | |
sw.Stop(); | |
$"{sw.Elapsed.TotalMilliseconds}ms".Dump("Dictionary"); | |
Debug.Assert(anagram("", "").Dump()); | |
Debug.Assert(anagram(" ", " ").Dump()); | |
Debug.Assert(anagram("1", "1").Dump()); | |
Debug.Assert(anagram("eros", "rose").Dump()); | |
Debug.Assert(anagram("eros", "lose").Dump() == false); | |
Debug.Assert(anagram("", "rose").Dump() == false); | |
Debug.Assert(anagram("eros", "rosesssss").Dump() == false); | |
Debug.Assert(anagram("bab", "aba").Dump() == false); | |
Debug.Assert(anagram(" ", " ").Dump() == false); | |
Debug.Assert(anagram(null, null).Dump() == false); | |
Debug.Assert(anagram(null, "").Dump() == false); | |
Debug.Assert(anagram("hoge", null).Dump() == false); | |
Debug.Assert(anagram("1", "2").Dump() == false); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
Show comment Hide commentguitarrapcOct 3, 2016
guitarrapc commentedOct 3, 2016