为Palindrome创建递归方法

Nig*_*erx 5 java recursion palindrome

我试图在Java中使用递归创建一个Palindrome程序,但我被卡住了,这是我到目前为止:

 public static void main (String[] args){
 System.out.println(isPalindrome("noon"));
 System.out.println(isPalindrome("Madam I'm Adam"));
 System.out.println(isPalindrome("A man, a plan, a canal, Panama"));
 System.out.println(isPalindrome("A Toyota"));
 System.out.println(isPalindrome("Not a Palindrome"));
 System.out.println(isPalindrome("asdfghfdsa"));
}

public static boolean isPalindrome(String in){
 if(in.equals(" ") || in.length() == 1 ) return true;
 in= in.toUpperCase();
 if(Character.isLetter(in.charAt(0))
}

public static boolean isPalindromeHelper(String in){
 if(in.equals("") || in.length()==1){
  return true;
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

谁能为我的问题提供解决方案?

Jig*_*shi 35

在这里,我为您粘贴代码:

但是,我强烈建议你知道它是如何工作的,

从你的问题来看,你完全不可读.

尝试理解此代码.阅读代码中的注释

import java.util.Scanner;
public class Palindromes
{

    public static boolean isPal(String s)
    {
        if(s.length() == 0 || s.length() == 1)
            // if length =0 OR 1 then it is
            return true; 
        if(s.charAt(0) == s.charAt(s.length()-1))
            // check for first and last char of String:
            // if they are same then do the same thing for a substring
            // with first and last char removed. and carry on this
            // until you string completes or condition fails
            return isPal(s.substring(1, s.length()-1));

        // if its not the case than string is not.
        return false;
    }

    public static void main(String[]args)
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("type a word to check if its a palindrome or not");
        String x = sc.nextLine();
        if(isPal(x))
            System.out.println(x + " is a palindrome");
        else
            System.out.println(x + " is not a palindrome");
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这是我第一次使用这个网站,实际上我得到了快速回复.谢谢大家. (5认同)

Jon*_*eet 5

好:

  • 目前尚不清楚为什么你有两个具有相同签名的方法.他们打算完成什么?
  • 在第一种方法中,为什么要测试单个空格任何单个字符的测试?
  • 您可能需要考虑将终止条件概括为"如果长度小于2"
  • 考虑一下你想要如何递归.一种选择:
    • 检查第一个字母是否等于最后一个字母.如果没有,则返回false
    • 现在使用子字符串有效地删除第一个和最后一个字母,然后递归
  • 这是否意味着递归练习?这当然是一种做法,但它远非唯一的方式.

我现在不会比现在更清楚地拼出来,因为我怀疑这是作业 - 事实上有些人可能认为上面的帮助太多了(我当然对此略显犹豫).如果您对上述提示有任何问题,请更新您的问题以显示您已经有多远.