当前位置: 首页 > 面试题库 >

为回文创建递归方法

冯开诚
2023-03-14
问题内容

我正在尝试使用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;
  }
 }
}

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


问题答案:

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

但是,我强烈建议您了解其工作原理,

从您的问题出发,您是完全不可读的。

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

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");
    }
}


 类似资料:
  • 我有两个非递归方法,其中一个读取字符串中的总“e”字符,另一个检查 ArrayList 是否按字母顺序排列。 递归方法的定义是方法调用自身。我相信我理解这个概念,但要实现它或将其转换为递归方法确实很困难。我怎样才能将这些方法转化为递归方法,同时我应该如何思考?此外,这是我的另一种方法,它只打印出指定数字大小的数字。 条件方法检查数字的第一个数字(从右起)是否大于第二个数字,并再次检查第二个是否大于

  • 我试图用C++中的回溯和递归来解决C++中的幻方问题。特别适用于4x4数组。 4x4幻方解的一个例子如下,其中每行、每列和对角线加34: 我所做的更改是:用户输入一些值,这些值将启动算法。 我的算法是这样的: 在这里你可以更好地欣赏图像。 我有一个概念,算法应该如何工作,以解决幻方的问题,回溯和递归,但我有问题。 其中之一是: 成就并没有让我的算法“忽略”用户已经输入的值。 我在C++中的代码在G

  • 我正在开发高级培养皿网络编辑器/模拟器。首先,这里有一些词汇 圆圈=位置 矩形=过渡 就地整数 = 标记 过渡状态=防护 我被困在通过过渡的守卫。守卫是一个条件,如果你想执行转换,这需要是真的。我知道我应该以某种方式使用回溯,但我不知道在程序开始之前进入过渡的位置数,所以我不能使用循环,因为我不知道我需要多少个循环。 所以,我想从第一位获取第一个令牌,从第二位获取第一令牌,然后尝试通过守卫,如果通

  • 该程序检查单词数组中的单词是否为回文(单词向前拼写与向后拼写相同)。 Main中的foreach循环将数组中的每个单词传递给IsPalindrome()函数;它测试单词,并相应地返回True或False。 由于当前数组中的每个单词都是回文,因此当程序运行时,它应该输出所有当前单词,后跟True。但是,它给了我False。为什么?

  • 假设N是根号,三者将创建N-1,N-2,N-3的左中右节点。 EX: 等。 我的 TreeNode 类具有以下变量: 每当我构造一个整数大于 28 的树时,我都会得到一个 OutOfMemoryError。我的递归方法是效率低下还是很自然?谢谢!

  • 问题内容: 我有两个使用YML子​​集的JSON格式的文件,其中一个是设备列表,另一个是列出特定类型设备属性的文件。 将设备实例列表分为一个文件,将属性分为另一个文件的选择是为了使设备制造商可以更改属性,而不必返回并重新编写/重新编译硬编码属性。 无论如何,我可以对JSONParser使用两个不同的调用,然后最后将属性列表添加到Device对象,但是这种解决方案似乎浪费了代码,因为while循环的