Вы не сможете найти решение, которое имеет меньшую сложность, чем O (n), потому что вам нужно пройти через каждый символ в худшем случае с входной строкой, которая имеет не более 0 или 1 последовательных пробелов, или полностью пустое пространство.
Вы можете сделать некоторые оптимизации, но они все равно будут считаться O (n).
Например:
Пусть M будет текущим самым длинным совпадением, пока вы просматриваете свой список. Также предположим, что вы можете получить доступ к элементам ввода в O (1), например, у вас есть массив в качестве ввода.
Когда вы видите не пропуски, вы можете пропустить M элементов, если current + M
не пропуски. Конечно, внутри не должно быть пробелов длиннее, чем М.
И когда вы видите символ белого пространства, если current + M-1
не является пробелом, вы знаете, что у вас нет самых длинных пробежек, иначе вы можете пропустить и в этом случае.