蛮力方式可以解决O(n!)中的问题,基本上计算所有排列并检查字典中的结果.我正在寻找提高复杂性的方法.我可以考虑从字典中构建一个树,但仍然检查所有字母排列是O(n!).有没有更好的方法来解决这个问题?
信件可以有重复.
该函数的api如下所示:
List<String> findValidWords(Dict dict, char letters[])
Run Code Online (Sandbox Code Playgroud) 我有这个想法(使用C语言)来检查由ASCII字母组成的两个字符串是否是彼此的字谜:
检查字符串是否长度相同.
检查两个字符串的所有字符的ASCII值之和是否相同.
检查两个字符串的所有字符的ASCII值的乘积是否相同.
我相信如果所有三个都是正确的,那么字符串必须是彼此的字谜.但是,我无法证明这一点.有人可以帮助我证明或反驳这会起作用吗?
谢谢!