Подскажите, пожалуйста, эффективный алгоритм поиска подстрок в строке, такой чтобы в строке он искал подстроки a1, a2, a3, .. ax, b1, b2, b3... bx, c1....z1, z2, z3...zx, такие, что в сумме все подстроки образуют строку. При этом строка задана, а подстроки - нет, но при этом известно, что каждая подстрока a_i, b_i..., i=1..x входит в список A, B... , то есть строка определена, а подстроки должен определить сам алгоритм?