java - 生成字符串的所有 k 大小的字谜

标签 java python algorithm recursion permutation

如果您看到这个问题的副本,请随意链接它,因为我以前没有看到这个问题。

对于面试问题,我有以下内容:

1) Generate all anagrams of a string
   Ex. anagrams("dog") -> ["dog","dgo","odg","ogd","gdo","god"]

2) Generate all k-size anagrams of a string
   Ex. anagrams("dog",k = 2) -> ["do","od","dg","gd","go","og"]

我通过递归输入字符串减去它的第一个字符,并将第一个字符插入每个返回的字谜的每个位置,提出了 (1) 的解决方案:

def anagrams(word):
    if len(word) == 1:
        return [word]
    current = word[0]
    anags = []
    for anag in anagrams(word[1:]):
        anags += [anag[:i] + current + anag[i:] for i in range(len(anag) + 1)]
    return anags

谁能为 (2) 的签名 def anagrams(word, k = None) 提出 Java 或 Python 解决方案?或在 Java 中 List<String> anagrams(String word, int k)

最佳答案

我相信这是正确的解决方案:

from itertools import permutations

def anagrams(word, k=None):
   return [''.join(p) for p in permutations(word, k)]

关于java - 生成字符串的所有 k 大小的字谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32728184/

相关文章:

algorithm - NP 中的语言(问题)和 P 中的语言(问题)之间的多项式时间减少

java - 如何在Android上为JWE从字符串生成公钥?

java - Hibernate 中的枚举,作为枚举持久存在

python - 是否有可能知道哪些 SciPy/NumPy 函数在多核上运行?

python - 如何检查显示= :0 exist from python?

algorithm - 如何在指数时间内找到最长公共(public)子序列?

java - 逐字节读取二进制文件

java - 在Java中运行Cucumber时修改CucumberOptions标签

python - 使用 Selenium 在 Web 表单结果中查找元素时出错

algorithm - 我的 Power 方法的运行时复杂性