gpt4 book ai didi

java - 使用柱状转置的排序不正确

转载 作者:行者123 更新时间:2023-11-30 10:01:56 26 4
gpt4 key购买 nike

我正在尝试使用柱状转置来使用 key 加密文本。我找到了一个这样做的例子,它看起来对我来说是正确的,但它并没有像我期望的那样排序。我只学习了几个月的 Java,所以我可能会遗漏一些东西。

我尝试了不同的四字母字符串,因为我只建议将 key 保留为四个字符。它似乎在某些情况下按预期顺序排列,但并非全部。

public static int[] arrangeKey(String key) {
String[] keys = key.split("");
Arrays.sort(keys);
int[] num = new int[key.length()];
for (int x = 0; x < keys.length; x++) {
for (int y = 0; y < key.length(); y++) {
if (keys[x].equals(key.charAt(y) + "")) {
num[y] = x;
break;
}
}
}
return num;
}

使用 String key = "live";

num 数组返回为 2130

我希望 eilv 输出 3102 的 num 数组,因为初始数组值为 e=3、i=1、l=0、v=2(“live”)为什么 Arrays.sort 数组返回 2130?

最佳答案

如果您需要根据您的要求进行换位(3102 表示“实时”),您需要分配

num[x] = y

代替

num[y] = x;

原因是字符的原始定位由变量x保存,排序后的位置由变量y保存。

一个小建议,适本地命名变量而不是“x”和“y”会帮助您更好更快地调试代码。另外,它也使其他人也很容易理解。我的意思不是错误的,也不是要冒犯你。只是分享我作为开发人员的经验,适本地命名变量和方法会有很大帮助。

关于java - 使用柱状转置的排序不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57210522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com