用重复的字符串填充数组 - JAVA

Fill Array With repeated String - JAVA

我正在实施 Vigenere 密码,假设我有一个 String 调用了 key,例如 "KEY"

我想用该字符串填充 char 数组,大小为 plainText

例如我有一个纯文本 "JAVA IS BEST" 字符 Array 取决于 plaintext 将是:

input: ['J','A','V','A',' ','I','S',' ','B','E','S','T']

output: ['K','E','Y','K',' ','E','Y',' ','K','E','Y','K']

如何制作与上面相同的输出数组?

你可以通过遍历原来的 char[] 来做到这一点,如果给定的字符不是 space,则将键的对应字母复制到 [= 的匹配索引12=] 你会 return。您可以使用 % 运算符找到键的匹配字母。您遇到的问题是,如果 i 处的字符等于 space,i 仍将递增,您将跳过 key 的字母。要解决此问题,您可以添加一个额外的计数器变量:

public static char[] foo(char[] arr) {
    String key = "KEY";
    char[] copy = new char[arr.length];
    for(int i = 0, index = 0; i < arr.length; i++) {
        if(arr[i] != ' ') {
            copy[i] = key.charAt(index++ % key.length());
        } else {
            copy[i] = ' ';
        }
    }
    return copy;
}

输出:

['K','E','Y','K',' ','E','Y',' ','K','E','Y','K']