Simple Palindrome Detector [duplicate]

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-31 05:14:09

问题


I'm working on a palindrome detector. I've already managed to make it work in some cases. When I type in a word like "Abba" it comes back as a palindrome. Great! But it doesn't do the same thing if I enter "cat". I can't use loops for this. Any ideas?

public class Palindrome {
    public static void main(String[]args) {
        Scanner in=new Scanner(System.in);

        System.out.print("Enter word");


        String start = in.nextLine();
        String end=start;

        boolean isPalindrome = (start == end);

        if (isPalindrome) {
            System.out.print("This is a palindrome");}
        else
            System.out.print("This is not a palindrome");

    } 
}

回答1:


start==end always compares the same string. If the input is "cat", it checks if "cat"=="cat" which is true.

Use recursion if you are not allowed to use loops:

String input=in.nextLine();

isPalindrome(0,start.length()-1,input);

boolean isPalindrome(left,right,input){
   if (left>=right){
      // left==right for odd palindrome
      // left>right for even palindrome
      return true;
   }
   if (str.charAt(left)!=str.charAt(right)){
       return false;
   }
   return isPalindrome(left+1,right-1,str);
}


来源:https://stackoverflow.com/questions/52415524/simple-palindrome-detector

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!