【问题标题】:Fill Array With repeated String - JAVA用重复的字符串填充数组 - 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']

我怎样才能在上面制作相同的输出数组?

【问题讨论】:

    标签: java vigenere


    【解决方案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']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多