用重复的字符串填充数组 - JAVA
Posted
技术标签:
【中文标题】用重复的字符串填充数组 - JAVA【英文标题】:Fill Array With repeated String - JAVA 【发布时间】:2018-11-30 01:22:05 【问题描述】:我正在实施 Vigenere 密码,假设我有一个
String
调用 key
,其值为例如“KEY”
我想用该字符串填充 char 数组,大小为plainText
例如,我有一个纯文本“JAVA IS BEST”,char Array
取决于 plaintext
将是:
input: ['J','A','V','A',' ','I','S',' ','B','E','S','T']
output: ['K','E','Y','K',' ','E','Y',' ','K','E','Y','K']
我怎样才能在上面制作相同的输出数组?
【问题讨论】:
【参考方案1】:您可以通过循环遍历原始char[]
来做到这一点,如果给定字符不是空格,则将键的相应字母复制到您将返回的char[]
的匹配索引中。您可以使用%
运算符找到密钥的匹配字母。您遇到的问题是,如果i
处的字符等于空格,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']
【讨论】:
以上是关于用重复的字符串填充数组 - JAVA的主要内容,如果未能解决你的问题,请参考以下文章