编写一个Java程序来检查字符串是否是回文,并附带示例。任何文本,如果从左到右和从右到左读都完全相同,那么它就是一个回文字符串。这意味着即使执行字符串反转,文本也保持不变。例如,dad,madam,wow,radar等。
Java 使用 StringBuilder 检查字符串是否为回文的程序
在本例中,我们使用 StringBuilder 类和 reverse 函数来反转 normStr 并将其赋给 revStr。接下来,我们在If Else 语句中使用 equalsIgnoreCase()(或使用equals())来比较 normStr 和 revStr。如果为真,则 normStr 是回文字符串;否则不是。
import java.util.Scanner;
public class PalindromeString1 {
private static Scanner sc;
public static void main(String[] args) {
String normStr;
sc= new Scanner(System.in);
System.out.print("\nPlease Enter String to check Palindrome = ");
normStr = sc.nextLine();
StringBuilder sb = new StringBuilder(normStr);
String revStr = sb.reverse().toString();
System.out.println("\nThe result of String Reverse = " + revStr);
if(normStr.equalsIgnoreCase(revStr) == true) {
System.out.println("\nThe Given String " + normStr + " is a Palindrome");
}
else {
System.out.println("\nThe Given String " + normStr + " is not");
}
}
}

使用 StringBuffer 和 reverse() 函数
StringBuffer 也有一个 reverse 函数可以应用于 normStr。我们使用此函数来检查回文字符串。
import java.util.Scanner;
public class PalindromeString2 {
private static Scanner sc;
public static void main(String[] args) {
String normStr;
sc= new Scanner(System.in);
System.out.print("\nPlease Enter Text = ");
normStr = sc.nextLine();
StringBuffer sbuff = new StringBuffer(normStr);
String revStr = sbuff.reverse().toString();
System.out.println("\nThe result of Reverse = " + revStr);
if(normStr.equalsIgnoreCase(revStr) == true) {
System.out.println("\nThe Given " + normStr + " is a Palindrome");
}
else {
System.out.println("\nThe Given " + normStr + " is not");
}
}
}
Java StringBuffer 输出。

Java 使用 for 循环检查字符串是否为回文的程序
在此程序中,我们使用for 循环从后向前(反序)迭代 normStr,并将其转换为 revStr。接下来,我们使用 (normStr.equalsIgnoreCase(revStr) == true) 来检查回文字符串。
import java.util.Scanner;
public class PaliStr3 {
private static Scanner sc;
public static void main(String[] args) {
String normStr;
int i;
sc= new Scanner(System.in);
System.out.print("\nPlease Enter String to check = ");
normStr = sc.nextLine();
String revStr = "";
for(i = normStr.length() - 1; i >= 0; i--) {
revStr += normStr.charAt(i);
}
System.out.println("\nThe result of Reverse = " + revStr);
if(normStr.equalsIgnoreCase(revStr) == true) {
System.out.println("\nThe Given String " + normStr + " is a Palindrome");
}
else {
System.out.println("\nThe Given " + normStr + " is not");
}
}
}

在此回文字符串程序中,我们将 normStrr 转换为 StrCharArr 字符数组。接下来,我们使用 for 循环从右到左迭代 StrCharArr,将最后一个字符赋给第一个索引,依此类推。然后,我们使用equalsIgnoreCase来比较和检查回文字符串。
import java.util.Scanner;
public class PaliStr4 {
private static Scanner sc;
public static void main(String[] args) {
String normStr;
int i, j = 0;
sc= new Scanner(System.in);
System.out.print("\nPlease Enter Text to check = ");
normStr = sc.nextLine();
char[] StrCharArr = normStr.toCharArray();
for(i = StrCharArr.length - 1; i >= 0; i--) {
StrCharArr[j++] = normStr.charAt(i);
}
String revStr = String.valueOf(StrCharArr);
System.out.println("\nThe result of Reverse = " + revStr);
if(normStr.equalsIgnoreCase(revStr) == true) {
System.out.println("\nThe Given String " + normStr + " is a Palindrome");
}
else {
System.out.println("\nThe Given " + normStr + " is not");
}
}
}
Please Enter Text to check = aaabbaaa
The result of Reverse = aaabbaaa
The Given String aaabbaaa is a Palindrome
在此回文字符串程序中,我们将第一个字符与最后一个字符进行比较,依此类推。如果它们不相等,则标志为 1,然后使用Break 语句退出循环。如果标志值为 0,则该字符串是回文。
import java.util.Scanner;
public class PaliStr5 {
private static Scanner sc;
public static void main(String[] args) {
String normStr;
int i, flag = 0;
sc= new Scanner(System.in);
System.out.print("\nPlease Enter String to check = ");
normStr = sc.nextLine();
char[] StrCharArr = normStr.toCharArray();
for(i = 0; i < StrCharArr.length; i++) {
if(StrCharArr[i] != StrCharArr[StrCharArr.length - i -1]) {
flag = 1;
break;
}
}
if(flag == 0) {
System.out.println("\nThe Given String " + normStr + " is a Palindrome");
}
else {
System.out.println("\nThe Given " + normStr + " is not");
}
}
}
Please Enter String to check = huh
The Given String huh is a Palindrome
这是回文字符串的另一个示例。我们没有使用标志,而是直接使用了字符索引和 break 语句。
import java.util.Scanner;
public class PaliStr6 {
private static Scanner sc;
public static void main(String[] args) {
String normStr;
int i;
sc= new Scanner(System.in);
System.out.print("\nPlease Enter text = ");
normStr = sc.nextLine();
int len = normStr.length();
int endIndex = len - 1;
for(i = 0; i <= endIndex; i++) {
if(normStr.charAt(i) != normStr.charAt(endIndex)) {
break;
}
endIndex--;
}
if(i >= endIndex) {
System.out.println("\nThe Given " + normStr + " is a Palindrome");
}
else {
System.out.println("\nThe Given " + normStr + " is not");
}
}
}
Please Enter text = hopoh
The Given hopoh is a Palindrome
Java 使用递归检查字符串是否为回文的程序
此示例中的 reverseString(normStr.substring(1)) + normStr.charAt(0) 行会递归调用函数,并更新字符。
import java.util.Scanner;
public class Example {
private static Scanner sc;
public static void main(String[] args) {
String normStr;
sc= new Scanner(System.in);
System.out.print("Please Enter text = ");
normStr = sc.nextLine();
String revStr = reverseString(normStr);
System.out.println("\nThe result of Reverse = " + revStr);
if(normStr.equalsIgnoreCase(revStr) == true) {
System.out.println("The Given " + normStr + " is a Palindrome");
}
else {
System.out.println("The Given " + normStr + " is not");
}
}
private static String reverseString(String normStr) {
if(normStr.isEmpty()) {
return normStr;
}
return reverseString(normStr.substring(1)) + normStr.charAt(0);
}
}
