leetcode第九题(回文)以及StringBuilder

题目:回文数字
eg. 121->true -121->false 10->false
自己的解法:(效率不好)



public
boolean isPalindrome(int x) {

        if(x<0)

            return false;

        int temp=x;

        StringBuilder sBuilder=new
StringBuilder();

        StringBuilder stemp=new
StringBuilder();

        StringBuilder sb=new StringBuilder();

        sBuilder.append(x);

        stemp.append(temp);

        sb=stemp.reverse();

       
if(sb.toString().equals(sBuilder.toString()))

            return true;

        else

            return false;

       

    }

注意:StringBuilder不能直接比较,StringBuilder类的equals()没有重写内部其实还是使用了==的比较方法所以会出现问题。
解决办法,使用toString()将StringBuilder转换为String再进行相应比较。

其他方法:
(1)`

StringBuilder
sBuilder = new StringBuilder();

sBuilder
= sBuilder.append(x).reverse();

return
String.valueOf(x).equals(sBuilder.toString());

`
(2)整数的回文和整数是相等的(类似第七题)

if(x<0) {         return false;        }     
int result = 0;  
int tmp = x;       
while (tmp > 0) {        
result *= 10;    
result += tmp%10;       
tmp = tmp/10;  }      
return result == x;

你可能感兴趣的:(leetcode第九题(回文)以及StringBuilder)