Я работаю над простым декодером-шифратором. Я использую частотный анализ для расшифровки зашифрованного текста. Просто смотреть на частоту уникальной буквы недостаточно. Мне нужно посмотреть на появление 2-буквенных последовательностей (возможно, 3-буквенных последовательностей).Считайте последовательности букв в строке - C++
Мой код для подсчета вхождений каждой буквы ниже
int counterRaw[256][2] = {0};
for(int i = 0; i <inputString.length(); i++)
counterRaw[inputString[i]][1]++;
int counterLetter[26][2] = {0};
for(int i = 0 ; i<26 ; i++){
counterLetter[i][0] = 'A'+i;
counterLetter[i][1] = counterRaw['A'+i][1];
Как вы можете видеть очень простой, но эффективный!
Но я не знаю, как добиться 2-буквенного счетчика последовательности, есть ли у вас какие-либо идеи, которые могли бы помочь мне закодировать это?
Спасибо!
EDIT: В качестве примера Учитывая Азаза RTYU JKLM Я хочу, чтобы моя программа для вывода:
AZ : 2
ZA : 1
ZR : 1
RT : 1
...
так дано '1a2bc3de4', граф будет' 2', потому что есть '' bc' и de' для двух последовательностей букв? –
Возможно, самое простое решение: используйте std :: map. –
Если вам нужны только две буквы, массив из вхождений int [26] [26]; было бы достаточно. – maja