想,我有N
符号的字母,并希望列举长度M
的所有不同的字符串在这个字母表。 Scala会为此提供任何标准库函数吗?标准函数来枚举给定长度的所有字符串在给定的字母
0
A
回答
3
从another answer获得灵感:
val letters = Seq(1, 2, 3)
Iterable.fill(n)(letters).foldLeft(List(List[Int]())) { (a, b) =>
for (a<-a;b<-b) yield(b::a)
}
需要进行额外的类型注解是有点麻烦,但它不会没有它的工作(:
val letters = Seq("a", "b", "c")
val n = 3
Iterable.fill(n)(letters) reduceLeft { (a, b) =>
for(a<-a;b<-b) yield a+b
}
Seq[java.lang.String] = List(aaa, aab, aac, aba, abb, abc, aca, acb, acc, baa, bab, bac, bba, bbb, bbc, bca, bcb, bcc, caa, cab, cac, cba, cbb, cbc, cca, ccb, ccc)
要使用字符串以外的东西的工作除非有人知道另一种方式)。
2
另一种解决方案:
val alph = List("a", "b", "c")
val n = 3
alph.flatMap(List.fill(alph.size)(_))
.combinations(n)
.flatMap(_.permutations).toList
更新:如果你想在输出字符串列表,然后alph
应该是一个字符串。
val alph = "abcd"
+0
当'n'大于'alph'的大小时,这似乎不起作用。例如:'alph = List(0,1)','n = 3'只产生6个序列,而不是预期的'8'。 – dsg
相关问题
- 1. 从给定的字符串给定长度的字符的差异字符串
- 2. 如何检索给定字符串文字的枚举值
- 3. 给定字节数的最大字符串长度
- 4. 给定一个字符串数组,将所有字符串的长度均替换为空字符串
- 5. 从给定字符生成等长的固定长度的随机字符串
- 6. 更换给定的字符串以字母在字母表
- 7. 如何将字符串转换为给定的枚举
- 8. 如何返回与给定字符串匹配的枚举值?
- 9. 给定长度的字符串的打字稿类型/接口
- 10. 将可变长度字符串分配给固定长度字符串
- 11. 固定长度的唯一字母数字字符串
- 12. 函数来给定字符串utf-8上的特定单词?
- 13. 如何在给定长度以上修整字符串中的所有单词?
- 14. 获取给定字体和矩形的字符串长度
- 15. 枚举resx中的所有字符串
- 16. 从给定的字符串中查找给定长度的子序列?
- 17. 固定长度字符串的数字
- 18. Python:binascii.a2b_hex给出“奇数长度字符串”
- 19. 检查字符串具有一定的长度,含有一定的字母
- 20. VBA的Excel的从字符串中提取给定的长度
- 21. 查找给定字符串中的所有非重复字符
- 22. 用特定单个字符替换给定字符串的所有字符
- 23. 大多数Python的方式来生成固定长度的随机字符串从给定字符
- 24. 如何将字符串切成给定长度的子字符串
- 25. 如何将字符串拆分为给定长度的子字符串?
- 26. 从给定的字符串
- 27. 从给定的字符串
- 28. 从给定的字符串
- 29. 所有枚举项到字符串(C#)
- 30. 在给定字符串上设置特定单词的函数?
我们可以摆脱大小为'n'的辅助列表吗? – Michael
@迈克尔是使用'填充'作为4e6暗示。我会编辑我的答案来反映这一点。 – Owen
太棒了!感谢您的新版本。 – Michael