簡體   English   中英

使用遞歸反轉字符

[英]Reversing characters using recursion

我可以實現反轉字符串中的每個單詞並保持順序不變,但是我相信使用遞歸可以更快地完成。 目前,我正在瀏覽每個字符並將其翻轉,這並不是最好的,因為當字符串較長時,它可能會變慢。 如果您想知道的話,我正在研究一種加密算法...

示例:473hTml je31%@ 31#

這將導致:lmTh374#13 @%13ej

任何指導或良好的閱讀將是巨大的。

不要使用遞歸:它不會更快。 反轉字符串不是需要遞歸的問題。

實際上,VB.Net具有StrReverse函數,所以我建議您只使用它(與String.Split組合以將字符串分解為單詞,並與String.Join組合在一起)。

另外, 請勿使用自己的加密貨幣 -至少,不是為了保護任何嚴重的東西。

我不是vb專家,但是這樣的事情應該是一個好的開始。

public string reverseWord(string data) {
    if (data.length == 1) {
        return data;
    } else {
        return data.Concat(data.Substring(-1), reverseWord(data.Substring(1));
    }
}

看吧,遞歸的BogoFlip!

Module Module1
    Private rnd As New Random
    Dim str As String = "testing"

    Sub Main()
        Console.WriteLine(str & "     " & BogoFlip(str))
        Console.ReadLine()
    End Sub

    Public Function BogoFlip(originalString As String) As String
        Dim copy As String = originalString
        Dim flipped As String = ""
        Do Until copy.Length = 0
            Dim index As Integer = rnd.Next(copy.Length)
            flipped &= copy(index)
            copy = copy.Remove(index, 1)
        Loop
        If flipped = StrReverse(originalString) Then
            Return flipped
        Else
            Return BogoFlip(originalString)
        End If
    End Function
End Module

請不要在現實生活中這樣做……請取悅。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM