gpt4 book ai didi

java - 排列后如何重新排列字符串

转载 作者:行者123 更新时间:2023-12-01 17:59:24 24 4
gpt4 key购买 nike

我使用下面的代码根据特定的表来排列字符串。

public static void main(String[] args) {

int[] IP = { 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4,
62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8,
57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3,
61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7 };


String text = "00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111".replace(" ", "");

text = Permute(text,IP);
System.out.println(text);
}

public static String Permute(String text,int [] table )
{
String keys = "0" + text;

StringBuilder sb = new StringBuilder ();

for (int i = 1 ; i <= table.length; i++)
{
sb.append(keys.charAt(table[i-1]));
}

return sb.toString();
}

更新:有什么想法可以创建另一种方法来取回原始字符串吗?类似于:

public static String   GetoriginalText(String TextafterPermutation,int [] table ) 

最佳答案

您可以使用根据表映射填充的字符数组

public static String RePermute(final String text, final int[] table) {
final String keys = text;

char[] chararray = new char[table.length];

for (int i = 0; i < keys.length() && i < table.length; i++) {
chararray[table[i]-1] = keys.charAt(i);
}

return new String(chararray);
}

此代码将迭代您的文本,并将当前迭代的字符写入表中指定的字符数组位置。

注意:您的代码中存在一些我未触及的问题。例如,我真的不明白为什么你总是在文本前面加上“0”。此外,您可能想要处理传递的文本和表格长度不同的情况。

编辑:我删除了在传递的文本前面添加“0”的部分,而是将循环更改为从 i=0 开始,而不是 i=1。

关于java - 排列后如何重新排列字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42226923/

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