gpt4 book ai didi

c# - 如何生成所有可能的单词

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:30 24 4
gpt4 key购买 nike

我是编程新手 (C#)。

该应用程序是一个“单词生成器”。

我正在寻找的是一个 for 循环,它可以用给定字符数组中的字符生成所有 可能的单词。

详情:

我有一个 List<char> = { A,a,6,w,# } (长度可能会有所不同)

我想用这个字符集生成所有可能的单词(例如:4 个字母长度)。此选项应生成 5 characters & 4 letters = 5*5*5*5 = 625 words .

All generated words should be every possible combination of the given letters only

注意:有些人可能会告诉我,我应该使用名为 ( Permutations of a String/Integer) 的解决方案如果所需的单词长度与给定的字符长度相同,则此方法似乎没问题,但在我的情况下,我可能会给应用程序 100 个字符,但我希望它生成所有可能的单词 -> 4 个字母长度(示例:MaRk,M @rK,m4rK...)

最佳答案

你可以使用 IEnumerable<String>方法:

public IEnumerable<String> GenerateStrings (IEnumerable<char> characters, int length) {
if(length > 0) {
foreach(char c in characters) {
foreach(String suffix in GenerateStrings(characters,length-1)) {
yield return c+suffix;
}
}
} else {
yield return string.Empty;
}
}

结果为 csharp (交互式 C# 外壳):

csharp> Foo.GenerateStrings(new char[] {'A','a','6','w','#'},3)
{ "AAA", "AAa", "AA6", "AAw", "AA#", "AaA", "Aaa", "Aa6", "Aaw", "Aa#", "A6A", "A6a", "A66", "A6w", "A6#", "AwA", "Awa", "Aw6", "Aww", "Aw#", "A#A", "A#a", "A#6", "A#w", "A##", "aAA", "aAa", "aA6", "aAw", "aA#", "aaA", "aaa", "aa6", "aaw", "aa#", "a6A", "a6a", "a66", "a6w", "a6#", "awA", "awa", "aw6", "aww", "aw#", "a#A", "a#a", "a#6", "a#w", "a##", "6AA", "6Aa", "6A6", "6Aw", "6A#", "6aA", "6aa", "6a6", "6aw", "6a#", "66A", "66a", "666", "66w", "66#", "6wA", "6wa", "6w6", "6ww", "6w#", "6#A", "6#a", "6#6", "6#w", "6##", "wAA", "wAa", "wA6", "wAw", "wA#", "waA", "waa", "wa6", "waw", "wa#", "w6A", "w6a", "w66", "w6w", "w6#", "wwA", "wwa", "ww6", "www", "ww#", "w#A", "w#a", "w#6", "w#w", "w##", "#AA", "#Aa", "#A6", "#Aw", "#A#", "#aA", "#aa", "#a6", "#aw", "#a#", "#6A", "#6a", "#66", "#6w", "#6#", "#wA", "#wa", "#w6", "#ww", "#w#", "##A", "##a", "##6", "##w", "###" }

使用具有 yield 的方法的优势声明是它是惰性的:如果你只需要五个这样的字符串,不会首先生成所有可能的字符串......

关于c# - 如何生成所有可能的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24756924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com