2012-08-02 56 views
1

我知道有一種更容易的方法可以使事情工作來檢查字符串是否是迴文,但我想用庫函數來嘗試它,並且我提出了下面的代碼。代碼更正建議使用Java庫的字符串?

public boolean isPalindrome1(String input) 
{ 

    int length = input.length()/2; 
    if(input.length()%2!=0) 
    { 
     length = length + 1; 
    } 


    return(input.substring(0,length).equals(new StringBuilder(input.substring(length, input.length())).reverse().toString())); 
} 

我想檢查一半的字符串是否等於另一半的相反。但它正在變得亂七八糟。有人可以在這裏指出更正,它將適用於奇數,偶數長度以及空字符串和長度爲1的字符串。

+1

爲什麼一半?您不會在整個字符串中獲得任何顯着的性能提升(這可以避免奇數/偶數問題) – SomeKittens 2012-08-02 16:34:54

+0

但是如何拆分它將如何工作?我不會使用代碼,但只是好奇地知道如何解決這種情況。 – Phoenix 2012-08-02 16:41:39

+0

如果有更簡單的方法來解決問題,則無需解決。在我的書中「解決這個問題」是使用簡單的解決方案。 – SomeKittens 2012-08-02 16:49:33

回答

6

您已經使用reverse()。爲什麼你不能比較輸入字符串和反向字符?這不正是你想要的嗎?無需以複雜的方式將事物分解成一半。

2

,您可以:

return new StringBuilder(input).reverse().toString().equals(input); 

在這裏你去,你想知道:

public boolean isPalindrome(String input) { 
    for (int i = 0; i < input.length()/2; i++) { 
     if (input.charAt(i) != input.charAt(input.length() - 1 - i)) { 
      return false; 
     } 
    } 
    return true; 
}