Java 回文
最后修改日期:2024 年 7 月 10 日
在本文中,我们将展示如何在 Java 中创建一个函数来识别回文。
回文是指正序(从左向右)和倒序(从右向左)读都一样的单词、数字、短语或其他字符序列,例如 madam 或 racecar。
在本文中,我们将展示几种在 Java 中检查字符串是否为回文的方法。
Java 回文与 StringBuilder
StringBuilder 的 reverse 方法会将此字符序列替换为该序列的反转。
void main() {
System.out.println(isPalindrome("radar"));
System.out.println(isPalindrome("kayak"));
System.out.println(isPalindrome("forest"));
}
boolean isPalindrome(String original) {
String reversed = new StringBuilder(original).reverse().toString();
return original.equals(reversed);
}
在此示例中,我们将原始字符串传递给 StringBuilder 并将其反转。然后,我们将反转后的字符串与原始字符串使用 equals 进行比较。
Java 回文与 for 循环和 charAt
String 的 charAt 方法返回指定索引处的 char 值。索引范围从 0 到 length() - 1。
void main() {
System.out.println(isPalindrome("radar"));
System.out.println(isPalindrome("kayak"));
System.out.println(isPalindrome("forest"));
}
boolean isPalindrome(String original) {
String reversed = "";
int len = original.length();
for (int i = len - 1; i >= 0; i--) {
reversed = reversed + original.charAt(i);
}
return original.equals(reversed);
}
在此示例中,我们使用一个从原始字符串末尾开始的 for 循环来构建反转的字符串。我们使用 charAt 获取当前字符。
int len = original.length();
我们使用 length 获取原始字符串中的字符数。
for (int i = len - 1; i >= 0; i--) {
reversed = reversed + original.charAt(i);
}
我们通过使用 charAt 从原始字符串的末尾获取字符来构建反转的字符串。
使用 toCharArray 方法
String 的 toCharArray 将字符串转换为新的字符数组。
void main() {
System.out.println(isPalindrome("radar"));
System.out.println(isPalindrome("kayak"));
System.out.println(isPalindrome("forest"));
}
boolean isPalindrome(String original) {
char[] data = original.toCharArray();
int i = 0;
int j = data.length - 1;
while (j > i) {
if (data[i] != data[j]) {
return false;
}
++i;
--j;
}
return true;
}
在此示例中,我们将原始字符串转换为字符数组。在一个 while 循环中,我们开始比较字符串两侧的字符;从最左边的字符和最右边的字符开始。我们一直到字符串的中间。
使用 Stack
Stack 是一种后进先出 (LIFO) 的集合。
import java.util.Stack;
void main() {
System.out.println(isPalindrome("radar"));
System.out.println(isPalindrome("kayak"));
System.out.println(isPalindrome("forest"));
}
boolean isPalindrome(String original) {
char[] data = original.toCharArray();
Stack<Character> stack = new Stack<>();
for (char c: data) {
stack.push(c);
}
char[] data2 = new char[data.length];
int len = stack.size();
for (int i = 0; i < len; i++) {
data2[i] = stack.pop();
}
var reversed = new String(data2);
return original.equals(reversed);
}
该示例使用 Java Stack 容器来构建反转的字符串。
char[] data = original.toCharArray();
首先,我们使用 toCharArray 将字符串转换为字符数组。
Stack<Character> stack = new Stack<>();
for (char c: data) {
stack.push(c);
}
在第二步中,我们将字符推入堆栈。
char[] data2 = new char[data.length];
此数组将保存反转的字符。
for (int i = 0; i < len; i++) {
data2[i] = stack.pop();
}
现在,我们通过从堆栈中弹出字符来获得反转的字符串。
var reversed = new String(data2);
return original.equals(reversed);
我们从数组创建反转的字符串,并使用 equals 将其与原始字符串进行比较。
来源
在本文中,我们已经检查了一个字符串是否是回文。我们创建了各种算法来检查回文。
作者
列出所有Java教程。