【发布时间】:2015-12-02 08:00:15
【问题描述】:
以下代码在Java中查找回文的时间和空间复杂度是多少:
public static boolean isPalindrome(String str) {
return str.equals(new StringBuilder(str).reverse().toString());
}
我知道 reverse() 是 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;
}
【问题讨论】:
标签: java algorithm time complexity-theory palindrome