В принципе, вы можете обновить KMP, чтобы таблица сбоев смотрела на входной символ, вызвавший несоответствие. Однако возникает вопрос, сколько это будет стоить вам, и какую выгоду вы получите от этого.
Одним из преимуществ KMP является то, что этап предварительной обработки занимает время O (n) где n - длина строки шаблона. Нет зависимости от количества символов, из которых состоит строка (например, Unicode, ASCII и т. Д. c.). Простое построение таблицы, связывающей каждый символ с тем, что делать в некоторых обстоятельствах, может негативно повлиять на время выполнения шага предварительной обработки.
При этом существуют и другие алгоритмы, которые действительно смотрят на несовпадающий символ в игле. Например, алгоритм Бойера-Мура решает, где искать дальше, в зависимости от того, какой несоответствующий символ найден, и в результате он может работать намного быстрее, чем KMP. Возможно, вы захотите изучить этот алгоритм, если вам интересно, как это работает на практике.