如何在 Java 中逐个字母地反转字符串?10 Sept 2024 | 5 分钟阅读 反转字符串是一项可以通过多种方式完成典型的编程任务。逐个字母地反转字符串是最直接的技术之一。在本教程中,我们将介绍 Java 中逐个字母地反转字符串。 在深入了解实现之前,让我们先掌握 Java 中字符串的基础知识。在 Java 中,字符串是字符的集合。Java 中的字符串是不可变的,因此一旦创建了字符串对象,就无法更改它。因此,为了反转字符串,必须创建一个新的字符串对象,其中字符按反序排列。 使用循环遍历字符串并将每个字符按反序附加到新字符串中是 Java 中逐个字母地反转字符串的最简单方法。这是关键 ReverseString.java 输出 Original String: Hello World! Reversed String: !dlroW olleH 让我们分析一下代码。初始字符串首先定义为“Hello World!”。然后,反转后的字符串将存储在一个稍后创建的名为 reversedString 的空字符串中。 之后,我们使用 for 循环从最后一个字符(length-1)开始,到第一个字符(0)结束,向后遍历原始字符串。为了在循环内将原始字符串中的每个字符附加到反转后的字符串,我们使用连接运算符(+)和 charAt() 方法从原始字符串中检索字符。 然后使用 println() 函数打印原始字符串和反转后的字符串。 正如您所见,代码已成功逐个字母地反转了原始字符串。 需要注意的是,这种方法对于添加的每个字符都会在内存中创建一个新的字符串对象,这对于长字符串来说可能效率不高。实际上,与使用 StringBuilder 或 StringBuffer 相比,连接单个字符串来创建反转后的字符串通常是更好的选择。 以下是另外两种在 Java 中逐个字母地反转字符串的方法 逻辑 2:使用字符数组通过将字符串分解为字符数组,遍历数组,并在数组的末尾交换字符直到它们在中间相遇,也可以在 Java 中反转字符串。这是代码 ReverseString.java 输出 Original String: Hello World! Reversed String: !dlroW olleH 让我们剖析一下这段代码。首先,我们使用 toCharArray() 方法将原始字符串转换为字符数组。之后,我们将两个指针 left 和 right 分别初始化为数组的第一个和最后一个字符。 然后,在 left 指针越过 right 指针之前,使用 while 循环遍历数组,交换 left 和 right 位置的字符。为此,我们首先将最左边的字符存储在一个临时变量中,然后将其与最右边的字符交换。然后使用临时变量中的字符替换当前位于正确位置的字符。 为了完成迭代,我们最后将 left 指针向右移动,将 right 指针向左移动。 循环完成后,我们使用接受 char 数组作为参数的 String 构造函数,将字符数组转换回字符串。 逻辑 3:使用递归递归是 Java 中逐个字母地反转字符串的第三种技术。可以创建一个递归函数,该函数以原始字符串的子字符串作为输入并对其进行反转,然后使用省略了第一个字符的子字符串调用自身。这是关键 ReverseString.java 输出 Original String: Hello World! Reversed String: !dlroW olleH 以代码为例。我们首先将第一个字符串定义为“Hello World!”。然后将原始字符串传递给 reverse() 函数,该函数返回 reversedString 字符串作为其输出。 reverse() 方法是递归的,它以字符串作为输入,并以反转的字符串作为输出。如果输入字符串的长度小于或等于 1,我们只以原始形式返回输入文本。 否则,将使用输入字符串中从第二个字符开始的子字符串(s.substring(1))反复调用 reverse() 方法。然后使用连接运算符(+)将输入字符串的第一个字符(s.charAt(0))添加到已反转的子字符串的末尾。 当递归继续,直到输入字符串被缩减为单个字符时,反转的字符串会从调用堆栈的底部构建起来并返回给调用者。 尽管递归是反转字符串的一种优雅方法,但由于它会在每次递归调用时创建一个新的字符串对象,因此它有时不如其他方法有效。 在 Java 中逐个字母地反转字符串有几种方法,每种方法都有其优点和缺点。性能、可读性和个人偏好只是可能影响您选择的策略的一些变量。 在 Java 中逐个字母地反转字符串是一项简单的任务,可以通过简单的循环来完成。如果您了解 Java 字符串的基础知识和必要的数据结构,就可以轻松地反转任何长度或复杂度的字符串。 下一个主题Java 8 对象空值检查 |
Codility 的 Passing Cars 问题只是众多典型算法问题之一,其主要目标是确定在同一条道路上朝相反方向行驶的有效成对汽车的总数。更具体地说,问题要求计算...
阅读 4 分钟
?在 Java 中,我们可以使用 Calendar 或 LocalDate 类向当前日期添加 6 个月。在本节中,我们将讨论这两种方法,并展示如何在 Java 代码中实现日期类。使用 Calendar 类 Calendar 类是一个遗留类,它被引入...
阅读 4 分钟
在本节中,我们将了解什么是辉煌数,并创建 Java 程序来检查给定的数字是否是辉煌数。辉煌数程序经常在 Java 编码面试和学术中出现。辉煌数 一个数被称为辉煌...
阅读 13 分钟
外星人词典问题通过分析排序的单词列表来确定未知语言字符的顺序。它根据字符优先级构建有向图,检测循环以确保存在有效顺序,并应用拓扑排序以找到正确的序列……
阅读 6 分钟
很多时候,我们需要克隆一个数组来备份其原始元素。我们有一些特殊的字符串和数字,如回文数、回文字符串和阿姆斯特朗数,为了检查它们的特殊性,我们需要克隆数组。例如,要检查……
7 分钟阅读
在 Java 中,Robot 是一个属于 java.awt 包的类。它还扩展了 Object 类。该类用于为测试自动化、自运行演示和其他需要控制鼠标和键盘的应用程序生成本地系统输入事件……
阅读 4 分钟
在 Java 中,并发中使用原子变量和操作。多线程环境在并发统一时会导致问题。共享实体,如对象和变量,可能在程序执行期间被更改。因此,它们可能导致程序不一致……
阅读 6 分钟
枚举或 enum,是 Java 中一个独立的数据类型。枚举是一组统一的连接常量,如一周中的几天或方向。枚举用于提供类型安全性,从而减少错误率。这是其主要优点之一。使用……
阅读 4 分钟
Java 提供了丰富而强大的库和工具来构建图形用户界面(GUI)。GUI 编程的一个重要方面是处理窗口事件。当用户与 GUI 交互时,例如打开、关闭、调整大小或移动窗口,就会发生窗口事件……
5 分钟阅读
Java 中的不可变性是指创建其状态在创建后无法更改的对象。不可变性在并发编程中特别有用,因为它消除了同步的需要并提供了一些线程保护。实现一致性改进的一种方法是创建……
阅读 13 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India