Java String манипулирование: сложность времени и пространства с использованием StringBuilder - PullRequest
2 голосов
/ 20 марта 2019

Недавно я давал интервью в компании XXX, и меня попросили написать код, чтобы поменять слова во входных данных.

Ввод: «Меня зовут Джо»

Вывод: "yM eman si eoJ"

Я написал ниже код, который скомпилирован и успешно выполнен со всеми пройденными тестовыми примерами.

Ниже приведен мой код (используемый язык программирования - Java):

 public String reverseWords(String s) {
      StringBuilder sb = new StringBuilder();
      s += ' ';
      for (int i = 1; i < s.length(); i++) {
           if (s.charAt(i) == ' ' && s.charAt(i-1) != ' ') {
                if (sb.length()>0) sb.append(' ');
                for (int j = i-1; j >= 0 && s.charAt(j) != ' '; j--) sb.append(s.charAt(j));
           }
      }
      return sb.toString();
 }

Затем интервьюер спросил со сложностью времени и пространства кода, на который я ответил: сложность пространства выглядит как O (N) (где N - количество символов на входе), а сложность времени - квадратичная. Интервьюер не выглядел удовлетворенным.

Какова будет временная и пространственная сложность приведенного выше кода? Кроме того, обратная связь с любым лучшим подходом была бы отличной. Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...