【问题标题】:All Combinations of List Elements Characters in VBVB中列表元素字符的所有组合
【发布时间】:2013-06-06 18:30:02
【问题描述】:

我有列表 L 包含可变数量的字符串 {123} {/-+} {ABCD} ... 我想构建一个递归函数来获取这些字符串字符的所有可能组合,因此上面的示例将产生:

1/A
1/B
1/B
1/D
1-A
1-B
..
3+D

【问题讨论】:

  • 您有List(Of String)List(Of List(Of String))?要置换的项目是字符串还是字符?该示例显示来自差异的字符。字符串正在排列。

标签: vb.net list recursion combinations


【解决方案1】:

如果你有三个独立的集合,你可以使用 LINQ 来获取笛卡尔积,例如

from a in symbols
from b in numbers
from c in letters
select a + b + c

【讨论】:

  • 如果它是已知的字符串数,但 OP 指定了“可变数量的字符串”,则此方法有效...
【解决方案2】:
    Module Module1

        Dim data As String() = {"123", "/-+", "abcd"}
        Dim charStack As New Stack(Of Char)

        Sub Main()
            visitString(0)
        End Sub

        Sub visitString(ByVal i As Integer)
            For j = 0 To data(i).Length - 1
                charStack.Push(data(i)(j))

                If i = data.Length - 1 Then
                    Dim q = String.Join("", charStack.Reverse)
                    Console.WriteLine(q)
                    Console.ReadKey()

                Else
                    visitString(i + 1)
                End If

                charStack.Pop()
            Next
        End Sub

    End Module

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-12
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    相关资源
    最近更新 更多