AA6

Задача

В заданной строке  дописать после каждого символа «!» символ «?».

Решение. 

Проверяем каждый символ строки до тех пор пока не встретится «!», после чего добавляем после него «?».

 

Input Output
Hello, world! Hello, world!?
 Why are we here?? Why are we here??
 !!!It’s ! a ! problem ! ! !?!?!?It’s !? a !? problem !? !?

Код на Java

 

2 thoughts on “AA6

  1. А какова сложность алгоритма? Судя по всему, она равна O(n * Insert(n)). То есть, она упирается в сложность операции Insert. А ее сложность, сдается мне, тоже O(n). Итого имеем O(n^2). А хотелось бы линию.

  2. Я конечно могу похвалить Вас за использование класса StringBuffer. Но sb.insert (i + k++, '?'); мало того, что не самая простая и понятная конструкция, так еще и медленная. Процитирую все еще актуальный комментарий Олега Петрова «А какова сложность алгоритма? Судя по всему, она равна O(n * Insert(n)). То есть, она упирается в сложность операции Insert. А ее сложность, сдается мне, тоже O(n). Итого имеем O(n^2). »

    Если Вы хотите посимвольно обрабатывать строку, постарайтесь обойтись операцией добавления только в конец StringBuffer — т.е. операция append (т.е. по очереди добавлять символы строки и знак ? когда нужно).

    Но можно сделать и попроще — вдруг есть метод класса который все сделает сам? (подсказка: какой-то из вариантов replace).