我正在做一个基本的编码算法,它接受输入,对它进行编码(使用随机数),然后解密。数组填充为“ char”类型。它分别加密每个字母。我如何检查它在编码字母时是否已将同一字母编码为其他字母。
例
编码方式
abc
给a随机数2
b被赋予随机数5
我怎样才能防止c被给予2或5
非常感谢!
最佳答案
这是我的主张:
Character yourInput[] = {'a', 'b', 'c', 'd'};
int yourInputEncoded[] = new int[yourInput.length];
Hashtable<Character, Integer> charToInt = new Hashtable<Character, Integer>();
ArrayList<Integer> alreadyUsedInt = new ArrayList<Integer>();
Random randomize = new Random();
for(int i = 0; i < yourInput.length; i++)
{
if(!charToInt.containsKey(yourInput[i]))
{
int randomInt = randomize.nextInt();
while(!alreadyUsedInt.contains(randomInt))
randomInt = randomize.nextInt();
charToInt.put(yourInput[i], randomInt);
alreadyUsedInt.add(randomInt);
}
yourInputEncoded[i] = charToInt.get(yourInput[i]);
}
对于每个字符,我们检查是否存在与int相关联的字符。如果不是,我们会(随机)生成一个新的关联int(以前从未使用过)。
之后,我们将char替换为其关联的int。那个:)