我正在做一个基本的编码算法,它接受输入,对它进行编码(使用随机数),然后解密。数组填充为“ 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。那个:)

09-27 06:59