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