什麼是下面的代碼在Java尋找回文的時間和空間複雜度:()迴文算法的時間和空間複雜
public static boolean isPalindrome(String str) {
return str.equals(new StringBuilder(str).reverse().toString());
}
我知道逆轉爲O(n)。 toString()也是O(n)。等於也是O(n)。這是否意味着這段代碼是O(n)?
至於空間複雜性,需要創建一個StringBuilder。我不確定將它轉換爲字符串後會發生什麼。 Java是否爲已轉換爲字符串的StringBuilder分配空間,然後忘記StringBuilder(允許它被垃圾收集器拾取)?
謝謝!
----------編輯-------------
我想知道更多有關棧上創建什麼isPalindrome被調用後。與空間相比,效率如何,例如,
謝謝!儘管如此,我還是不太明白這個代碼是多麼有效率的空間。究竟會在堆棧上創建什麼?而在於如何有效的它(在空間上)相比,比方說,
public boolean palindrome2(String str) {
int n = str.length();
for(int i = 0; i < n/2; i++)
if (str.charAt(i) != str.charAt(n-i-1)) return false;
return true;
}