Creating a recursive method for Palindrome

前端 未结 21 1936
野的像风
野的像风 2020-12-03 06:28

I am trying to create a Palindrome program using recursion within Java but I am stuck, this is what I have so far:

 public static void main (String[] args){
         


        
相关标签:
21条回答
  • 2020-12-03 07:01

    Try this:

    package javaapplicationtest;
    
    public class Main {
    
        public static void main(String[] args) {
    
            String source = "mango";
            boolean isPalindrome = true;
    
            //looping through the string and checking char by char from reverse
            for(int loop = 0; loop < source.length(); loop++){          
                if( source.charAt(loop) != source.charAt(source.length()-loop-1)){
                    isPalindrome = false;
                    break;
                }
            }
    
             if(isPalindrome == false){
                 System.out.println("Not a palindrome");
             }
             else
                 System.out.println("Pailndrome");
    
        }
    
    }
    
    0 讨论(0)
  • 2020-12-03 07:01

    for you to achieve that, you not only need to know how recursion works but you also need to understand the String method. here is a sample code that I used to achieve it: -

    class PalindromeRecursive {
      public static void main(String[] args) {
    
    
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter a string");
        String input=sc.next();
        System.out.println("is "+ input + "a palindrome : " +  isPalindrome(input));
    
    
      }
    
      public static  boolean isPalindrome(String s)
      {
        int low=0;
        int high=s.length()-1;
        while(low<high)
        {
          if(s.charAt(low)!=s.charAt(high))
          return false;
          isPalindrome(s.substring(low++,high--));
        }
    
        return true;
      }
    }
    
    0 讨论(0)
  • 2020-12-03 07:02

    Here is the code for palindrome check without creating many strings

    public static boolean isPalindrome(String str){
        return isPalindrome(str,0,str.length()-1);
    }
    
    public static boolean isPalindrome(String str, int start, int end){
        if(start >= end)
            return true;
        else
            return (str.charAt(start) == str.charAt(end)) && isPalindrome(str, start+1, end-1);
    }
    
    0 讨论(0)
  • 2020-12-03 07:03

    Here is my go at it:

    public class Test {
    
        public static boolean isPalindrome(String s) {
            return s.length() <= 1 ||
                (s.charAt(0) == s.charAt(s.length() - 1) &&
                 isPalindrome(s.substring(1, s.length() - 1)));
        }
    
    
        public static boolean isPalindromeForgiving(String s) {
            return isPalindrome(s.toLowerCase().replaceAll("[\\s\\pP]", ""));
        }
    
    
        public static void main(String[] args) {
    
            // True (odd length)
            System.out.println(isPalindrome("asdfghgfdsa"));
    
            // True (even length)
            System.out.println(isPalindrome("asdfggfdsa"));
    
            // False
            System.out.println(isPalindrome("not palindrome"));
    
            // True (but very forgiving :)
            System.out.println(isPalindromeForgiving("madam I'm Adam"));
        }
    }
    
    0 讨论(0)
  • 2020-12-03 07:04
    public static boolean isPalindrome(String str)
    {
        int len = str.length();
        int i, j;
        j = len - 1;
        for (i = 0; i <= (len - 1)/2; i++)
        {
          if (str.charAt(i) != str.charAt(j))
          return false;
          j--;
        }
        return true;
    } 
    
    0 讨论(0)
  • 2020-12-03 07:06
    public static boolean isPalindrome(String in){
       if(in.equals(" ") || in.length() < 2 ) return true;
       if(in.charAt(0).equalsIgnoreCase(in.charAt(in.length-1))
          return isPalindrome(in.substring(1,in.length-2));
       else
          return false;
     }
    

    Maybe you need something like this. Not tested, I'm not sure about string indexes, but it's a start point.

    0 讨论(0)
提交回复
热议问题