Creating a recursive method for Palindrome

前端 未结 21 1935
野的像风
野的像风 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:06

    public class PlaindromeNumbers {

    int func1(int n)
    {
        if(n==1)
            return 1;
    
        return n*func1(n-1);
    }
    
    static boolean check=false;
    int func(int no)
    {
    
        String a=""+no;
    
        String reverse = new StringBuffer(a).reverse().toString();
    
        if(a.equals(reverse))
        {
    
            if(!a.contains("0"))
            {
               System.out.println("hey");
                check=true;
                return Integer.parseInt(a);
            }
    
        }
    
          //  else
          //  {
        func(no++);
        if(check==true)
        {
            return 0;
        }
           return 0;   
       }
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner in=new Scanner(System.in);
        System.out.println("Enter testcase");
       int testcase=in.nextInt(); 
       while(testcase>0)
       {
         int a=in.nextInt();
         PlaindromeNumbers obj=new PlaindromeNumbers();
           System.out.println(obj.func(a));
           testcase--;
       }
    }
    

    }

    0 讨论(0)
  • 2020-12-03 07:07

    Here is a recursive method that will ignore specified characters:

    public static boolean isPal(String rest, String ignore) {
        int rLen = rest.length();
        if (rLen < 2)
            return true;
        char first = rest.charAt(0)
        char last = rest.charAt(rLen-1);
        boolean skip = ignore.indexOf(first) != -1 || ignore.indexOf(last) != -1;
        return skip || first == last && isPal(rest.substring(1, rLen-1), ignore);
    }
    

    Use it like this:

    isPal("Madam I'm Adam".toLowerCase(), " ,'");
    isPal("A man, a plan, a canal, Panama".toLowerCase(), " ,'");
    

    It does not make sense to include case insensitivity in the recursive method since it only needs to be done once, unless you are not allowed to use the .toLowerCase() method.

    0 讨论(0)
  • 2020-12-03 07:09
    public class palin
    { 
        static boolean isPalin(String s, int i, int j)
        {
            boolean b=true;
            if(s.charAt(i)==s.charAt(j))
            {
                if(i<=j)
                    isPalin(s,(i+1),(j-1));
            }
            else
            {
                b=false;
            }
            return b;
        }
        public static void main()
        {
            String s1="madam";
            if(isPalin(s1, 0, s1.length()-1)==true)
                System.out.println(s1+" is palindrome");
            else
                System.out.println(s1+" is not palindrome");
        }
    }
    
    0 讨论(0)
提交回复
热议问题