使用 Java 判断回文
1. 什么是回文
“回文串”是一个正读和反读都一样的字符串,如“level”或者“noon”等就是回文串。
2. Java 实现
- 字符串倒置后逐一比较法
import java.util.Scanner;
public class Palindrome {
public static boolean isPalindrome(String str){
StringBuffer stringBuffer = new StringBuffer(str);
//把字符串反转
stringBuffer.reverse();
int count =0;
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i) == stringBuffer.charAt(i)){
count++; //统计相同字符的个数
}
}
if(count == str.length()){
return true;
}else{
return false;
}
}
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入要检验的回文: ");
String str = input.nextLine();
if(isPalindrome(str)){
System.out.println(str + " 是回文");
}else{
System.out.println(str + " 不是回文");
}
input.close();
}
}
- 字符串首尾元素对比法
import java.util.Scanner;
public class Palindrome {
public static boolean isPalin(String data) {
int len = data.length();
for (int i = 0; i < len/2; i++) {
if (data.charAt(i) != data.charAt(len-1-i)) {
return false;
}
}
return true;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// hasNext 判断是否有输入的数据,只要有输入的数据就执行扫描和输出
while (input.hasNext()) {
System.out.println("请输入字符串: ");
String data = input.nextLine();
if (isPalin(data)) {
System.out.println(data + "是回文");
} else {
System.out.println(data + "不是回文");
}
}
input.close();
}
- 利用入栈、出栈字符串的一半字符和剩余一半元素进行对比(借助数据结构---栈)
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Palindrome {
public static boolean isPalindrome(String str) {
// 堆栈一
List<Character> stack1 = new ArrayList<Character>();
// 堆栈二
List<Character> stack2 = new ArrayList<Character>();
// 字符串长度的一半
int haflen = str.length() / 2;
for (int i = 0; i < haflen; i++) {
// 字符进栈
stack1.add(str.charAt(i));
// 倒序进栈
stack2.add(str.charAt(str.length() - i - 1));
}
// 标识符
boolean bFlag = true;
// 出栈并比较
for (int i = haflen - 1; i >= 0; i--) {
if (stack1.remove(i) != stack2.remove(i)) {
bFlag = false;
break;
}
}
// 返回比对结果
return bFlag;
}
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入要检验的回文: ");
String str = input.nextLine();
if(isPalindrome(str)){
System.out.println(str + " 是回文");
}else{
System.out.println(str + " 不是回文");
}
input.close();
}
}

浙公网安备 33010602011771号