java - 在 Java 中使用递归将字符串转换为反向字符串
问题描述
今天我试图将字符串转换为e.g(Cat Is Running into Running Is Cat)
逐字反转字符串而不是字符
public class ReverseString_ {
public static void reverse(String str) {
String[] a = str.split(" ");
for (int i = a.length - 1; i >= 0; i--) {
System.out.println(a[i] + " ");
}
}
public static void main(String[] args) {
reverse("Cat Is Running");
}
}
显示以下输出:
Running Is Cat BUILD SUCCESSFUL (total time: 0 seconds)
我正在尝试将字符串转换为与上面相同的反向字符串,但通过递归方法,但它似乎太混乱了。并显示更多错误。有人可以帮我理解它。非常感谢
public static String reverse_recursion(String str) {
if (str == null)
return null;
else {
String Arry[] = str.split(" ");
int n = Arry.length - 1;
System.out.println(Arry[n] + "");
return reverse_recursion(Arry[n - 1]);
}
}
public static void main(String[] args) {
reverse_recursion("Cat Is Running");
}
此代码显示以下输出:
Running
Is
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
这段代码为什么不打印(0) index
?有人可以帮我解决这个错误吗
解决方案
这应该有效:
public static String reverse(String s) {
int idx = s.indexOf(" ");
if (idx < 0) {
// no space char found, thus, s is just a single word, so return just s itself
return s;
} else {
// return at first the recursively reversed rest, followed by a space char and the first extracted word
return reverse(s.substring(idx + 1)) + " " + s.substring(0, idx);
}
}
public static void main(String[] args) {
System.out.println(reverse("Cat Is Running"));
}
推荐阅读
- kdb - kdb+ Q : 从表中选择列值 =
- python - 在使用 uwsgi 时使管理界面可访问
- python - 使用保存在数据框中的链接对多个网站进行 Websraping,无法找到元素错误
- javascript - 即使在 dragenter 和 dragover 上使用 event.preventDefault 也不会触发 Drop 事件
- jinja2 - 无法使用 Jinja 读取具有字典结构数组的 Pillar
- python - 在 Azure Pipelines 中使用 pytest 发布 Python 项目代码覆盖率
- mysql - 优化具有 7000 万行的简单查询以适应 Tableau
- python - 如何将数据(server_respond)发送到python本地主机上http.server中的特定端口号?
- python - 如何绘制以第一行为索引的条形图?
- javascript - 图片点击功能