原文: https://howtodoinjava.com/puzzles/java-string-palindrome-number-palindrome/

回文是一个单词,词组,数字或其他单元序列,可以在任一方向上以相同的方式读取,通常是否使用逗号,分隔符或其他单词分隔符不是必需的

类似地,回文数是指如果所有数字都颠倒了就代表相同数字的那些数字(下划线可以忽略较大的数字,例如1_00_00_001)。 数字文字中的下划线是 Java7 功能中的新增内容。

1. Java 回文字符串示例

要检查回文字符串,请反转字符串字符。 现在使用String.equals()方法来验证给定的字符串是否是回文。

1.1 使用 Apache Commons StringUtils检查字符串回文

Java 中用于字符串的简单回文程序。 它也是 Java 中使用反转方法的回文程序。

  1. public class Main
  2. {
  3. public static void main(String[] args)
  4. {
  5. System.out.println( isPalindromeString("howtodoinjava") ); //false
  6. System.out.println( isPalindromeString("abcba") ); //true
  7. }
  8. public static boolean isPalindromeString(String originalString)
  9. {
  10. String reverse = StringUtils.reverse(originalString);
  11. return originalString.equals(reverse);
  12. }
  13. }

1.2 使用StringBuilder检查字符串回文

同样的逻辑也可以应用于StringBuffer类。

  1. public class Main
  2. {
  3. public static void main(String[] args)
  4. {
  5. System.out.println( isPalindromeString("howtodoinjava") );
  6. System.out.println( isPalindromeString("abcba") );
  7. }
  8. public static boolean isPalindromeString(String originalString)
  9. {
  10. String reverse = new StringBuilder(originalString).reverse().toString();
  11. return originalString.equals(reverse);
  12. }
  13. }

1.3 用for循环检查字符串回文

使用for循环charAt()方法遍历最后一个索引的字符串字符来获取反转字符串,并创建新字符串。

仅当您在 Java 中检查字符串回文而不使用反转方法时,才使用此方法。

  1. public class Main
  2. {
  3. public static void main(String[] args)
  4. {
  5. System.out.println( isPalindromeString("howtodoinjava") );
  6. System.out.println( isPalindromeString("abcba") );
  7. }
  8. public static boolean isPalindromeString(String originalString)
  9. {
  10. String reverse = "";
  11. int length = originalString.length();
  12. for ( int i = length - 1; i >= 0; i-- )
  13. reverse = reverse + originalString.charAt(i);
  14. return originalString.equals(reverse);
  15. }
  16. }

2. Java 回文数示例

为了验证给定数字是否为回文数是否为真,我们需要反转数字位数,如果两者相等或不相等,则与原始数字进行比较。

  1. package com.howtodoinjava.puzzle;
  2. public class PalindromeTest
  3. {
  4. /**
  5. * Test the actual code if it works correctly
  6. * */
  7. public static void main(String[] args)
  8. {
  9. System.out.println(checkIntegerPalindrome( 100 )); //false
  10. System.out.println(checkIntegerPalindrome( 101 )); //true
  11. System.out.println(checkIntegerPalindrome( 500045 )); //false
  12. System.out.println(checkIntegerPalindrome( 50005 )); //true
  13. }
  14. /**
  15. * This function will test the equality if a number and its reverse.
  16. * @return true if number is palindrome else false
  17. * */
  18. public static boolean checkIntegerPalindrome(int number)
  19. {
  20. boolean isPalindrome = false;
  21. if(number == reverse(number))
  22. {
  23. isPalindrome = true;
  24. }
  25. return isPalindrome;
  26. }
  27. /**
  28. * This function will reverse a given number.
  29. * @return reverse number
  30. * */
  31. public static int reverse(int number)
  32. {
  33. int reverse = 0;
  34. int remainder = 0;
  35. do {
  36. remainder = number % 10;
  37. reverse = reverse * 10 + remainder;
  38. number = number / 10;
  39. } while (number > 0);
  40. return reverse;
  41. }
  42. }
  43. 程序输出:
  44. false
  45. true
  46. false
  47. true

学习愉快!