上面问的是当输入的字符串为什么的时候返回 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。
我说的对称是输入字符串从中间拆开,旁边对称。
很遗憾的是,在这个题目的选择时候,我选错了。