【发布时间】:2017-03-16 06:35:10
【问题描述】:
对于我的作业,我必须使用递归来测试两个字符串是否相同但相反。
这是实际的问题:
编写一个名为 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;
}
}
}
【问题讨论】:
-
欢迎来到 SO。请不要链接您的代码图像。由于许多原因,这没有帮助。在此处发布代码,您将更有可能获得帮助。
-
不要将文本/代码作为图片/链接发布 (more info)
-
如果您使用调试器,您会看到您检查了第一个字符,然后删除了最后一个字符。如果您检查了第一个,请删除第一个。