传递给此方法的字符串如何反转?如果传递“ ABCD”,则字符串变为“ DCBA”,但我想反向(str.substring(1))会自称,直到返回“ D”为止,该字符串将与str.substring(0,1)串联是D,字符串返回为“ DD”。JAVA编程语言。
private static String reverse(String str) {
if (str.length() <= 1) {
return str;
}
return reverse(str.substring(1)) + str.substring(0, 1);
}
答案 0 :(得分:6)
您最好的选择是在纸上处理和/或逐步在IDE内置的调试器中逐条声明。
reverse("ABCD")
返回reverse("BCD") + "A"
。这是递归。调用尚未返回,因为它需要reverse("BCD")
的结果才能向其添加"A"
并返回。
reverse("BCD")
返回reverse("CD") + "B"
,它等待reverse("CD")
返回
reverse("CD")
返回reverse("D") + "C"
,它等待reverse("D")
返回
reverse("D")
返回"D"
reverse("D") + "C"
的结果为"DC"
,因此现在reverse("CD")
可以返回"DC"
reverse("CD") + "B"
的结果为"DCB"
,因此现在reverse("BCD")
可以返回"DCB"
reverse("BCD") + "A"
的结果为"DCBA"
,因此现在reverse("ABCD")
可以返回"DCBA"
答案 1 :(得分:0)
您还可以使用以下过程解决问题:
String reversed = new StringBuilder(str).reverse().toString();
此外,根据有关线程安全的要求,您可以使用StringBuffer或StringBuilder