Мне интересно, смогу ли я уменьшить временную сложность (обозначение Big O) для функции перестановки строк, если я выполню перестановки на месте вместо циклического прохождения всех символов в массиве.
Сначала я подумал, что да, потому что при замене мест я должен проходить только половину символов в данной строке. Хотя, если подумать, это дало бы временную сложность O (.5n), которая была бы равна O (n), как при асимптотической сложности, мы игнорируем множители.
public static String reverse(String str) {
char[] strArray = str.toCharArray();
for (int i = 0; i < str.length()/2; i++) {
char temp = strArray[str.length() - i - 1];
strArray[str.length() - i - 1] = strArray[i];
strArray[i] = temp;
}
return new String(strArray);
}
Возможно, я ответил на свой собственный вопрос, так как считаю, что это будет такая же сложность по времени, как если бы я перебрал все символы в строке, т. Е. O (n), но, возможно, я что-то пропустил и мне просто потребовались некоторые разъяснения.