用重复的字符串填充数组 - 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的主要内容,如果未能解决你的问题,请参考以下文章

急求!!!!用java 写一个 字符串去重 的程序!

PHP数组不会填充mysql数据[重复]

Java数组去重复问题

java在中间有空格的字符串中左填充零[重复]

用字符串填充argv(并获取argc)以传递给其他方法[重复]

java中怎么将字符串数组中的重复的元素去掉,但是还是保留一个。