我正在完成一项任务,这部分让我感到困惑。
通过首先用第一个密钥中的唯一字母填充矩阵来构造 cipher1。
例如,如果键是“testkey”
,则用字母T、E、S、K、Y填充键。
不要从键中填写重复的字符。然后用字母表的剩余字符填充矩阵(再次跳过 Q)。
不要重复出现在键中的任何字符。因此,对于“ testkey ”,cipher1看起来像这样:
密码是一个5 x 5 的数组,通常用字母表中的字母减去 'q' 填充。
因此,如果我的密钥是 testkey,那么密码现在将填充 "TESKYABCDFGHIJLMNOPRUVWXZ" instead of "ABCDEFGHIJKLMNOPRSTUVWXYZ".
我认为这样的事情会奏效,但事实并非如此。
for (int i = 0; i < key.length(); i++)
{
key.toCharArray();
alphabet.replace(key[i], "");
}
键变量是字符串“TESTKEY”,字母表变量也是包含“ABCDEFGHIJKLMNOPRSTUVWXYZ”的字符串。
现在看代码明显有缺陷,现在我被卡住了。请任何人给我建议
试试这个 :
public static void main(String[] args) {
String testS = "testkey";
String key = "ABCDEFGHIJKLMNOPRSTUVWXYZ";
testS = testS.toUpperCase() + key;
testS = removeDuplicates(testS);
System.out.println(testS);
}
static String removeDuplicates(String string) {
StringBuilder noDuplicateChars = new StringBuilder();
for (int i = 0; i < string.length(); i++) {
String letter = string.substring(i, i + 1);
if (noDuplicateChars.indexOf(letter) == -1) {
noDuplicateChars.append(letter);
}
}
return noDuplicateChars.toString();
}
如果由于某种原因您不想使用StringBuilder
,您可以将实现更改removeDuplicates
为:
static String removeDuplicates(String string) {
String noDuplicates = new String("");
for (int i = 0; i < string.length(); i++) {
if (!noDuplicates.contains("" + string.charAt(i))) {
noDuplicates += "" + string.charAt(i);
}
}
return noDuplicates;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句