实例008字符串的有序合并

Array.Sort 方法

https://docs.microsoft.com/zh-cn/dotnet/api/system.array.sort?view=netframework-4.8#System_Array_Sort__1___0___System_Int32_System_Int32_System_Collections_Generic_IComparer___0__

String.Chars[Int32] 属性

https://docs.microsoft.com/zh-cn/dotnet/api/system.string.chars?redirectedfrom=MSDN&view=netframework-4.8#System_String_Chars_System_Int32_

控制台程序

Module Module1

    Sub Main()
        Dim String1, String2 As String
        Dim SortString1, SortString2, ResultString As String
        Dim chars1(), chars2(), result() As Char
        Dim FstCount, secCount, resCount As Integer
        Console.WriteLine("输入第一个字符串,回车结束")
        '输入第一个字符串
        String1 = Console.ReadLine()
        Console.WriteLine("输入第二个字符串,回车结束")
        '输入第二个字符串
        String2 = Console.ReadLine()

        ReDim chars1(String1.Length - 1)
        ReDim chars2(String2.Length - 1)

        '字符串变成字符数组
        '将第一个字符串的内容存放在字符数组中
        For FstCount = 0 To String1.Length - 1
            chars1(FstCount) = String1(FstCount)
        Next
        '对第一个字符数组排序
        Array.Sort(chars1)

        '将第二个字符串的内容存放在字符数组中
        For FstCount = 0 To String2.Length - 1
            chars2(FstCount) = String2(FstCount)
        Next
        '对第二个字符数组排序
        Array.Sort(chars2)

        '字符数组变字符串
        SortString1 = Convert.ToString(chars1)
        SortString2 = Convert.ToString(chars2)

        FstCount = 0
        secCount = 0
        resCount = 0

        '合并两个字符串
        While FstCount < SortString1.Length And secCount < SortString2.Length
            ReDim Preserve result(resCount)
            If SortString1.Chars(FstCount).CompareTo(SortString2.Chars(secCount)) < 0 Then
                result(resCount) = SortString1.Chars(FstCount)
                FstCount += 1
            ElseIf SortString1.Chars(FstCount).CompareTo(SortString2.Chars(secCount)) = 0 Then '除去重复字符
                result(resCount) = SortString1.Chars(secCount)
                FstCount += 1
                secCount += 1
            Else
                result(resCount) = SortString2.Chars(secCount)
                secCount += 1
            End If
            resCount += 1
        End While

        ResultString = Convert.ToString(result)

        If FstCount < SortString1.Length Then
            ResultString = String.Concat(ResultString, SortString1.Substring(FstCount))
        ElseIf secCount < SortString2.Length Then
            ResultString = String.Concat(ResultString, SortString2.Substring(secCount))
        End If
        Console.WriteLine("输入字符串排序后为")
        Console.WriteLine(chars1)
        Console.WriteLine(chars2)
        Console.WriteLine(ResultString)

        Console.ReadLine()
    End Sub

End Module

 

你可能感兴趣的:(#,VB2010编程技巧与实例)