Java使用substring()反转字符串

时间:2018-09-11 06:55:54

标签: java

传递给此方法的字符串如何反转?如果传递“ 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);
}

2 个答案:

答案 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