这是为文本生成字谜词的最佳方法(最多 80 个字符长度)。
例子:
输入:狗
输出狗 dgo odg ogd gdo 神
我只是在考虑回溯解决方案,但如果文本较长,这将需要一段时间。
另一个想法是我尝试字典中的所有单词,但问题并不要求真正的单词。
有人能指出一个最小时间复杂度的解决方案吗?
谢谢你!
这是一个简单的实现,以防万一您需要:
IEnumerable<List<T>> Permutations<T>(List<T> items)
{
if (items.Count == 0) yield return new List<T>();
var copy = new List<T>(items);
foreach (var i in items)
{
copy.Remove(i);
foreach (var rest in Permutations(copy))
{
rest.Insert(0, i);
yield return rest;
}
copy.Insert(0, i);
}
}
IEnumerable<string> Anagrams(string word)
{
return Permutations(word.ToCharArray().ToList()).Select(x => new String(x.ToArray()));
}
Adithya 给出了关于时间复杂度的答案。要理解他们的答案,你必须知道有 n! = 1*2*...*n 个项目的排列。我的算法是对此的证明(或基于直接证明)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)