使用 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(); } }