2014-07-08 4 views
0

문자열의 각 단어를 뒤집어서 순서를 유지할 수는 있지만 재귀를 사용하면 더 빨리 수행 할 수 있습니다. 현재 나는 각 캐릭터를 뒤적 거리며 뒤집어 쓰고 있습니다. 문자열이 길면 느려질 수 있으므로 최고는 아닙니다. lmTh374 # 13 13ej재귀를 사용하여 문자 반전

모든 지침 또는 % @이가 초래 473hTml je31 %

# 31 @ : 당신이 알고 싶다면 나는

예 ... 암호화 알고리즘에서 일하고 있어요 좋은 독서는 위대 할 것입니다.

+0

가능한 중복 [문자열 반전 재귀 (http://stackoverflow.com/questions/1993247/string-reversal-recursively) – bsoist

+0

라는 단어의 마지막 문자를 가지고 단어의 나머지의 역을 연결 :) – bsoist

답변

3

재귀를 사용하지 마십시오. 속도가 빠릅니다. 문자열을 되 돌리는 것은 재귀가 필요한 문제가 아닙니다.

실제로 VB.Net은 StrReverse 기능을 가지고 있으므로 문자를 단어로 분리하려면 String.Split과 결합하고 다시 넣으려면 String.Join과 결합하면됩니다.

또한 don't roll your own crypto - 적어도 심각한 것을 보호하기위한 것이 아닙니다.

+2

"자신의 암호를 굴려서는 안됩니다"+100 – bsoist

+1

** ** 재귀를 필요로하는 문제가 없습니다 ** 재귀 – bsoist

+0

@Blorgbeard 나는 strreverse 함수에 대해 알고 있었으므로 더 좋은 방법이 될 것이라고 생각했습니다. 또한 split을 사용하고 나서 join을하면 속도에 몇 가지 나쁜 영향을 끼치 지 않을 것입니다 ... 다른 메모에서 CryptoStream 클래스를 확장하는 자체 암호화를 롤백하지 않을 것입니다. – Codexer

0

나는 VB 전문가가 아니지만, 이와 같은 것은 좋은 출발이어야합니다.

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

거기에 재귀가 보이지 않습니다 .. – Blorgbeard

+0

@Blorgbeard 내 잘못입니다. 편집 됨. – bsoist

-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 

제발 ... 제발 제발 please please 제발.

+1

나는 그 질문에 즐거워했다. 나는 나의 오락을 함께 나눌 것이라고 생각했다. –

+1

완전히 새로운 수준으로 무의미한 재귀가 필요합니다 ... – Grim