Легко.Битовое поле вашего символьного пространства (0 == 0x1
, 1 == 0x2
, ...), затем взять первые N символов каждой строки в S и добавить их преобразованные представления, XOR всегопротив 0x3,...
, и посмотрите, оценивает ли он ноль.
Для более быстрого обхода, чем O(n)
, используйте это для формирования двоичного дерева поиска или кучи (O(lg n)
fetch) или хэша (O(1)
выборки).Если гарантируется сортировка S , это станет еще проще.
По крайней мере, если я правильно понимаю ваш вопрос.Для лучшего, более теоретического результата с ограниченной математической сложностью и доказательствами Math.SE или CSTheory.SE являются точками доступа.