Перестановка алфавита (VB) - PullRequest
0 голосов
/ 16 ноября 2011

Я хотел по существу переставить алфавит с ключевым словом infront, поскольку я делаю простой шифр замещения. Я вроде разработал логику этого, но я немного застрял на стороне кодирования.

То, что я хотел, было что-то вроде:

Dim key = "keyword"

    For i = 0 to 26

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

    Next


'output: keywordabcfghijlmnpqstuvxz

Ответы [ 3 ]

3 голосов
/ 16 ноября 2011
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
3 голосов
/ 16 ноября 2011

Я думаю, что цикл по клавише чище, чем цикл по алфавиту:

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)
1 голос
/ 16 ноября 2011

Вот решение в 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 для символов ключа и удалить текущий символесли уже существует.Не забудьте переместить цикл на один цикл назад, если вы удалите его.

...