Цикл для подсчета пробелов занимает O(n)
, а не O(1)
, так как вы выполняете итерацию и выполняете проверку каждого из n
символов в вашей строке.
По мере того как вызаявлено, замена цикла занимает O(n)
.Две O(n)
операции, выполняемые последовательно, имеют общую сложность O(n)
(постоянные коэффициенты отбрасываются в нотации Big-O).
PS Вы знаете, что вы можете получить эквивалент всего своего кода, используя одну строку?
s = s.Replace(" ", "%20");