plduhoux
2/23/2018 - 11:44 PM

isSubstitutionCipher

boolean isSubstitutionCipher(String string1, String string2) {
    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 < string1.length(); i++) {
        int p = string1.charAt(i) - 97;
        if (cor[p] != -1 && cor[p] != string2.charAt(i) - 97) return false;
        cor[p] = string2.charAt(i) - 97;
        usedLetters.add(p);
    }
    for (int i = 0; i < 26; i++) cor[i] = -1;
    usedLetters = new HashSet<>();
    for (int i = 0; i < string2.length(); i++) {
        int p = string2.charAt(i) - 97;
        if (cor[p] != -1 && cor[p] != string1.charAt(i) - 97) return false;
        cor[p] = string1.charAt(i) - 97;
        usedLetters.add(p);
    }
    return true;
}