Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java使用substring()反转字符串_Java - Fatal编程技术网

Java使用substring()反转字符串

Java使用substring()反转字符串,java,Java,传递给此方法的字符串如何反转?如果您传递“ABCD”,字符串将变为“DCBA”,但我认为反向(str.substring(1))将调用它self,直到它返回“D”,它将与str.substring(0,1)连接,str.substring(0,1)是D,字符串返回为“DD”。JAVA编程语言 private static String reverse(String str) { if (str.length() <= 1) { return str; }

传递给此方法的字符串如何反转?如果您传递“ABCD”,字符串将变为“DCBA”,但我认为反向(str.substring(1))将调用它self,直到它返回“D”,它将与str.substring(0,1)连接,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);
}
私有静态字符串反转(字符串str){

如果(str.length()像这样的事情,最好是在纸上完成,和/或在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”

    • 像这样的事情,最好是在纸上完成,或者在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”

      您也可以使用以下步骤来解决问题:

      String reversed = new StringBuilder(str).reverse().toString();
      

      此外,根据有关线程安全的要求,您可以使用StringBuffer或StringBuilder,也可以使用以下步骤解决问题:

      String reversed = new StringBuilder(str).reverse().toString();
      

      另外,根据关于线程安全的要求,您可以使用StringBuffer或StringBuilder。您好,欢迎使用。您知道递归是如何工作的吗?reverse(str.substring(1))将调用它self,直到它返回“D”,它将与str.substring(0,1)相关联,str.substring(0,1)是D,字符串返回为“DD”-否。您尝试过调试吗?您好,欢迎使用SO。您知道递归是如何工作的吗?reverse(str.substring(1))将调用它自己,直到它返回“D”,它将与str.substring(0,1)关联,str.substring(0,1)是D,字符串返回为“DD”-否。您尝试过调试吗?感谢您的快速响应。感谢您的快速响应。