java 中的回文

Palindrome in java

这是我试过的 样本输入是“aabaa”
例如:在 if 条件下 val[0] = a[4]
如果它相等我将它存储在计数器变量中如果它是原始字符串长度的一半它是回文
如果不是就不是回文

我尝试了java中的基础知识,如果有任何错误,请告诉我

boolean solution(String inputString) {
  int val = inputString.length();
  int count = 0;
  for (int i = 0; i<inputString.length(); i++) {
    if(inputString.charAt(i) == inputString.charAt(val-i)) {
       count = count++;
      if (count>0) {
        return true;
      }  
    }
  }
  return true;
}

怎么样

public boolean isPalindrome(String text) {
    String clean = text.replaceAll("\s+", "").toLowerCase();
    int length = clean.length();
    int forward = 0;
    int backward = length - 1;
    while (backward > forward) {
        char forwardChar = clean.charAt(forward++);
        char backwardChar = clean.charAt(backward--);
        if (forwardChar != backwardChar)
            return false;
    }
    return true;
}

来自here

在您的版本中,您将第一个元素与最后一个元素进行比较,将第二个元素与倒数第二个元素进行比较,依此类推。 这种情况下的最后一个元素是 inputString.length()-1(所以需要使用 'inputString.charAt(val-i-1)' 。如果你迭代到最后,那么计数应该等于字符串的长度。

for(int i = 0; i<inputString.length(); i++){
   if(inputString.charAt(i) == inputString.charAt(val-i-1)){
       count ++;
   }
 }
 return (count==val); //true when count=val

或者迭代到数组的中点,则计数值为val/2。

for(int i = 0; i<inputString.length()/2; i++){
   if(inputString.charAt(i) == inputString.charAt(val-i-1)){
       count ++;
   }
 }
 return (count==val/2);  //true when count=val/2

这个问题没有限制,所以让我提出一个更俗气的解决方案。

boolean isPalindrome(String in) 
    final String inl = in.toLowerCase();
    return new StringBuilder(inl).reverse().toString().equals(inl);
}