/ / Odwracanie znaków za pomocą rekursji - vb.net, string, rekursja

Odwracanie postaci za pomocą rekursji - vb.net, string, rekursja

Potrafię odwrócić każde słowo w ciągu znaków izachowaj także kolejność, ale uważam, że można to zrobić szybciej przy użyciu rekursji. W tej chwili przechodzę przez każdą postać i przerzucam ją, nie jest najlepsza, ponieważ może być wolna, gdy ciąg jest długi. Pracuję nad algorytmem szyfrowania, jeśli chcesz wiedzieć ...

Przykład: 473hTml je31% @ 31 #

Spowoduje to: lmTh374 # 13 @% 13ej

Wszelkie wskazówki lub dobra lektura byłyby świetne.

Odpowiedzi:

3 dla odpowiedzi № 1

Nie używaj rekursji: nie będzie szybciej. Odwracanie łańcucha nie jest problemem, który wymaga rekursji.

Właściwie VB.Net ma StrReverse funkcja, więc radziłbym po prostu użyć tego (połączyć z String.Split łamać twój ciąg w słowa, i String.Join złożyć je razem).

Również, nie twórz własnego krypto - przynajmniej nie dla ochrony czegoś poważnego.


0 dla odpowiedzi nr 2

Nie jestem ekspertem od vb, ale coś takiego powinno być dobrym początkiem.

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

-1 dla odpowiedzi nr 3

Oto rekurencyjny 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

Nie rób tego w prawdziwym życiu ... proszę, proszę, proszę.