用重复的字符串填充数组 - 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']
我正在实施 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']