<
>
Цитата дня
«Если человек не желает по утрам заниматься бегом, ничто не может его остановить». Йоги Берра

Лишняя буква

Перебор и сравнение элементов массивов

Вам заданы две непустые строки s и t, состоящие из строчных букв латинского алфавита, причем строка s ровно на один символ длиннее строки t. Вы должны удалить ровно одну букву в строке s таким образом, чтобы строка s стала равна строке t.

Например, если удалить из строки «abacaba» третью букву, то она станет равна строке «abcaba».

Определите позицию буквы в строке s, которую нужно удалить, чтобы строка s стала равна строке t, либо сообщите, что такой позиции не существует (вывод 0).

АЛГОРИТМ

  1. Изначально считаем, что строки совпадают вплоть до последнего символа. pos = n. (удаляем последнюю букву, т.к. она лишняя)
  2. Сверяем символы строк пока они совпадают (если дошли до конца строки совпадают, pos остается равным n)
  3. Запоминаем позицию в которой строки различаются в переменную pos (!!!позиция на 1 больше, чем индекс элемента массива). выходим из цикла, чтобы не проводить проверку pos > 0 каждую итерацию (у нас в строке 200 000 символов!)
  4. Если pos > 0 начинаем цикл с pos (проверяем следующий за pos символ !!! pos на 1 больше, чем индекс элемента массива) Сверяем символ s[i] с t[i-1], если различаются выводим pos = 0 и выходим из цикла, т.к. строки не совпадают.
  5. Выводим pos.