你如何列出彼此字谜的单词?
当我申请当前的工作时,我被问到了这个问题.
orchestra
可以将carthorse
所有原始字母重新排列成一次,因此这些单词是彼此的字谜.
将所有字母按字母顺序排列在字符串中(排序算法),然后比较结果字符串.
-亚当
好的事情我们都生活在C#现实中,在具有oozles内存的四核机器上就短字进行就地排序.:-)
但是,如果您碰巧受到内存限制并且无法触及原始数据,并且您知道这些单词包含来自ASCII表格下半部分的字符,那么您可以使用不同的算法来计算每个字母中每个字母的出现次数.单词而不是排序.
如果你想在O(N)中执行它并且不关心内存使用(每个Unicode char的计数器可能非常昂贵),你也可以选择该算法.
对每个元素进行排序(删除空格)并与之前的元素进行比较.如果他们都是一样的话,他们都是字谜.