Sac*_*hin 11 string algorithm dictionary
您将获得一个包含3个字母单词的字典,并且必须找到3x3的矩阵,以便每个行,列和对角线在字典中形成一个单词.字典中的单词已排序,您可以假设O(1)时间从字典中检索单词.
这被问到Facebook面试问题.
我的方法是首先过滤字典以创建两个新词典:第一个包含单词的所有单个字母前缀(其中可能有26个),第二个包含单词的所有双字母前缀(其中少于26 ^ 2因为没有单词以BB开头,例如).
从词典中选择一个单词,然后调用它X.这将是矩阵的第一行.
检查X1,X2,X3都使用得心应手名单你做有效的单字母前缀.如果是,继续第3步; 否则回到第1步.
从词典中选择一个单词,然后调用它Y.这将是矩阵的第二行.
检查X1 Y1,X2 Y2,X3 Y3都使用得心应手名单你做有效的双字母前缀.如果是,继续第5步; 否则回到第3步.如果这是字典中的最后一个字,那么一直回到第1步.
从词典中选择一个单词,然后调用它Z.这将是矩阵的第三行.
检查X1 Y1 Z1,X2 Y2 Z2,X3 Y3 Z3在字典中的所有单词.如果他们是,恭喜,你已经做到了!否则返回步骤5.如果这是字典中的最后一个字,那么一直回到第3步.
我在Maple中编写了这个代码并且它运行得相当好.我让它运行以找到所有这些矩阵,事实证明,由于内存溢出,有足够的崩溃Maple.