plduhoux
2/22/2018 - 4:58 PM

substitutionCipherDecryption

String substitutionCipherDecryption(String contents, String signature, String encryptedSignature) {
    int[] cor = new int[26];
    for (int i = 0; i < 26; i++) cor[i] = -1;
    Set<Integer> usedLetters = new HashSet<>();
    for (int i = 0; i < signature.length(); i++) {
        cor[encryptedSignature.charAt(i) - 97] = signature.charAt(i) - 97;
        usedLetters.add(signature.charAt(i) - 97);
    }
    int curletter = 0;
    for (int i = 0; i < 26; i++) {
        if (cor[i] == -1)  {
            while (usedLetters.contains(curletter)) curletter++;
            cor[i] = curletter;
            usedLetters.add(curletter);
        }
    }
    String res = "";
    for (int i = 0; i < contents.length(); i++) {
        res += (char)(cor[contents.charAt(i) - 97] + 97);
    }
    return res;
}