0

単純な置換暗号を行っているので、基本的にキーワードを前に付けてアルファベットを再配置したかったのです。私はそれを行うロジックをある程度理解しましたが、コーディング側で少し立ち往生しています。

私が欲しかったのは次のようなものでした:

Dim key = "keyword"

    For i = 0 to 26

    'insert keyword and put in A to Z after without duplicating characters

    Next


'output: keywordabcfghijlmnpqstuvxz
4

3 に答える 3

3

キーをループする方が、アルファベットをループするよりもきれいだと思います。

Dim key as string = "keyword"

Dim alphabet As new StringBuilder("abcdefghijklmnopqrstuvwxyz")

for each c As Char in key
    alphabet.Replace(c.ToString(), Nothing)
next

return key & alphabet.ToString()

または、各繰り返しでアルファベットの 26 文字すべてをスキャンしないように、次のように置換行を変更することで、わずかに効率的になります。

    alphabet.Replace(c.ToString(), Nothing, 0, 1)
于 2011-11-16T18:49:49.820 に答える
3
Public Function Rearrange(keyword As String) As String
    Dim cipher As New StringBuilder(26)
    cipher.Append(keyword)
    For c As Char = "a"C To "z"C
        If Not keyword.Contains(c) Then
            cipher.Append(c)
        End If
    Next
    Return cipher.ToString()
End Function
于 2011-11-16T18:32:16.513 に答える
1

これがvbの解決策です:

Public Function words(key As String) As String
    Dim ret As String
    ret = key
    key = key.ToLower()
    For c As Char = "a"c To "z"c
        If Not key.Contains(c) Then
            ret = ret + c.ToString
        End If
    Next

    Return ret
End Function

キーの一意の文字を確認する場合は、キーの文字を介してforループを実行し、現在の文字がすでに存在する場合は削除するだけです。文字を削除する場合は、forループを1文字戻すことを忘れないでください。

于 2011-11-16T18:26:16.413 に答える