java - 使用递归来测试两个字符串是否相同但方向相反

标签 java string recursion

对于我的作业,我必须使用递归来测试两个字符串是否相同但相反。

这是实际问题:

编写一个名为 isStringReversed 的递归方法,给定两个 String 参数,如果两个字符串包含相同的字符序列但顺序相反(忽略大写),则返回 true,否则返回 false。例如,isStringReversed("piano", "oNaIp") 将返回 true。注意:null(空)字符串和一个字母的字符串都是其自身的反转。

这是我所做的,但是当我执行该程序时,我总是得到 错误返回。这是我的代码:

public static boolean isStringReversed(String s1, String s2) {
    if (s1 == null || s2 == null || s1.length() == 1 || s2.length() == 1) {
        return true;
    }else if (s1.length() != s2.length()) {
        return false;
    }else {
        char s1first = Character.toLowerCase(s1.charAt(0));
        char s2last = Character.toLowerCase(s2.charAt(s2.length() - 1));

        if (s1first == s2last){
            String s1shorter = s1.substring(0, s1.length() - 1);
            String s2shorter = s2.substring(0, s2.length() - 1);
            return isStringReversed(s1shorter, s2shorter);
        }else {
            return false;
        } 
    }
}

最佳答案

s1first 上执行 substring 时,您应该删除第一个字符,而不是最后一个。

仅在上面一行比较 s1first第一个字符和s2last最后字符。因此,一旦确定它们相等,就将其删除并继续递归。

关于java - 使用递归来测试两个字符串是否相同但方向相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40388569/

相关文章:

java - 串纹打印

c - 在带有 while 循环的 C 中使用递归函数的阶乘程序 c

谁能解释一下这个递归代码到底是如何工作的,以及程序堆栈或内存中一步一步发生了什么?

java - 使用 RestTemplate 对 Rest API 进行基本身份验证

java - WebDataBinder 自定义日期编辑器不起作用

c# - 来自字符串值的通用类型

python - 对于看似相同的列表,格式有不同的行为

java - Spring JMS 模板 - 并发调用

java - 递归代码到非递归循环

python - 如何解析树中的常见子项并在 Python 中为它们指定唯一的名称?