有点意思的 Java 递归调用

最近在刷一些问题的时候看到有下面一个问题

上面问的是当输入的字符串为什么的时候返回 True

总结

在做题目的时候,第一次还做错了。

这是因为解答这个题目的时间只有 3 分钟,没有自己看题目

后来拿着程序跑了下。

复制代码
    public void testGetPut() throws Exception {

        String text = "abcdef";
        System.out.println(text.equals(alertText(text)));
    }

    private String alertText(String inputText) {
        if (StringUtils.isBlank(inputText))
            return inputText;

        return inputText.charAt(inputText.length() - 1) + alertText(inputText.substring(0, inputText.length() - 1));
    }

上面代码的运行结果如下:

如果仔细看这个问题就可以发现在子函数里面有一个递归调用。

这个可能是会比较困惑的地方。

这行代码 inputText.charAt(inputText.length() - 1) 将会返回你输入字符串的最后一个字符。

然后在使用 + 这个是 String 的字符串连接计算。

随后再递归调用了这个方法,可以看到递归调用输入的字符串为为上次使用的字符串,去掉最后一个字符的字符串。

然后在递归调用方法中又取得了最后一个字符。

通过上面的算法,我们会知道需要满足返回为 TRUE 的情况。

只有一种可能就是字符串应该需要对称排列。

所以答案应该是 :ab1221ba

只要满足对称排列就可以了,所以如果你输入:abc123321cba 这个也会返回 TRUE。

我说的对称是输入字符串从中间拆开,左右对称。

很遗憾的是,在这个题目的选择时候,我选错了。

有点意思的 Java 递归调用 - Java - OSSEZ

相关推荐
吃好睡好便好2 小时前
查找函数的使用
学习·算法·matlab·生活·查找函数
学习星球2 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode
可乐鸡翅yeah_2 小时前
hls.js 内存泄漏实战排查,直播 M3U8 长时间播放异常定位方案
开发语言·javascript·python·django·ecmascript·m3u8·m3u8在线
前端 贾公子2 小时前
第09章:上下文与记忆 (2)
java·服务器·前端
2601_962203512 小时前
Java进阶07集合(续)
java·开发语言
郑州光合科技余经理3 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php
roman_日积跬步-终至千里3 小时前
【数据治理(6)】DataOps 不是调度工具,而是让数据产品长期可信的运行机制
java·服务器·网络
来了就未晚3 小时前
Python基础 学习代码存储与命名规范
开发语言·python·学习
靠沿3 小时前
贪心算法专题(二)
算法·贪心算法
落魄大学生之流水线上谋生计3 小时前
LangGraph 基本用法指南
java·windows·python·langchain