Java使用substring()反转字符串
传递给此方法的字符串如何反转?如果您传递“ABCD”,字符串将变为“DCBA”,但我认为反向(str.substring(1))将调用它self,直到它返回“D”,它将与str.substring(0,1)连接,str.substring(0,1)是D,字符串返回为“DD”。JAVA编程语言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; }
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”-否。您尝试过调试吗?感谢您的快速响应。感谢您的快速响应。