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教程。