Всем доброго времени суток!
У меня есть карта с ключами в виде символов и их значениями в виде строк, она выглядит следующим образом (Baconian Cipher):
public class MyClass {
private static final Map<Character, String> cipheredAlphabet;
static {
cipheredAlphabet = new HashMap<Character, String>();
cipheredAlphabet.put('a', "AAAAA");
cipheredAlphabet.put('s', "BAABA");
}
}
У меня есть строка, котораявыглядит следующим образом:
String encodedMessage = "BAABAAAAAA";
Я хочу перебрать его по 5 букв за раз:
StringBuilder decodedMessage = new StringBuilder();
for(int i=0; i<encodedMessage.length(); i+=5) {
String fiveLetters = encodedMessage.substring(i, i+5);
// compare five letters to values and append the corresponding key
}
Как я могу сравнить эти пять букв со значениями на карте и добавить кмой StringBuilder соответствующий ключ?
Ожидаемый вывод:
sa
Используя информацию из документации, я придумал что-то вроде этого:
StringBuilder decodedMessage = new StringBuilder();
for(int i=0; i<encodedMessage.length(); i+=5) {
String fiveLetters = encodedMessage.substring(i, i+5);
// pseudo code starts from this point
for(Map.Entry<Character, String> entry: cipheredAlphabet.entrySet()) {
if(cipheredAlphabet.getValue().equals(fiveLetters))
decodedMessage.append(cipheredAlphabet.getKey());