- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我刚刚解决了这个问题,我想不出比暴力破解更好的方法给定一个二维字符数组和一个有效单词的原始列表。1) 从数组中找出所有有效的单词。从数组中的每个元素,您可以向上、向下、向右或向左遍历。例如,
g o d b o d y
t a m o p r n
u i r u s m p
上述二维数组中的有效词 -> god, goat, godbody, amour,....
最佳答案
确保您有一个按字母顺序排序的有效单词列表。您可以在 n lg n 时间内构建它。
现在您有了这个排序列表,您可以在 lg n 时间内验证字符序列是否是正确单词的开头。
使用一组有效单词来验证字母序列是否为有效单词(在恒定时间内)。
现在为每个起始位置调用 getWords(input, startX, startY, new ArrayList(), "") 并合并结果列表:
public List<String> getWords(char[][] input, int x, int y, List<String> result, String current){
if(isValidWord(current))
result.add(current);
if(isValidStartOfWord(current)){
// call getWords recursively for all valid directions, concatenating the char to current
}
return result;
}
通过这种方式,您将在 O(x^2 * y^2 * lg w) 时间内找到答案,x 和 y 维度为 char 数组,w 为有效单词列表的大小。这并不比最坏的情况好(考虑到 lg w 验证),但这对我来说似乎是不可能的。这样预期的运行时间会更好。
如果有效单词列表很小,您还可以为正确单词的所有有效开头构建一个集合。在这种情况下,您可以在恒定时间内验证您是否在寻找正确的单词,最坏的情况减少到 O(x^2 * y^2)。
祝你好运。
关于algorithm - 算法解决纵横字谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14704546/
我的程序运行良好,这只是我需要的一个小建议;首先这是我的代码,用于检查两个单词是否是字谜;效果很好; #include int anagram_check(char [], char []); in
面试问题给定两个输入字符串,您只能交换字符串中的两个连续元素。您必须展示将一个字符串转换为另一个字符串的所有步骤(两个字符串将是彼此的字谜)。例如。口香糖到马克杯 古姆百货公司通用汽车大学微量气体发生
我正在尝试学习 Python。考虑这个简单的 C 语言变位词检查器: bool are_anagrams(const char* str1, const char* str2) { int str
(下面关于我的问题的代码) 根据 this stack overflow question我使用 Pegolon 的方法来生成 NSString 中一组字符的所有可能排列。但是,我现在试图让它不仅生成
testing if strings are anagrams有很多种方式.但是,我想知道是否有一种方法可以只对每个单词进行一次迭代?如果不是,在 Python 中最有效的方法是什么? 我们可以遍历第
我是一名优秀的程序员,十分优秀!