如何判断一个字串是回文?

回文是指正反排列都一样的字符串,比如"level"、"madam"。在Java中,我们可以使用多种方法来判断一个字符串是否为回文。下面我将介绍一种常用的方法,并给出相应的代码示例。

方法一:反转字符串比较

该方法的思路是将原始字符串反转,然后和原始字符串进行比较,如果相同则说明是回文。

具体代码如下:

public static boolean isPalindrome(String s) {
    String reversed = new StringBuilder(s).reverse().toString();
    return s.equals(reversed);
}

接下来,我们通过一个具体的问题来演示该方法的使用。

问题描述:

给定一个字符串数组,要求找出其中所有是回文的字符串。

解决方案:

  1. 首先,定义一个方法checkPalindrome来判断一个字符串是否为回文。
public static boolean checkPalindrome(String s) {
    String reversed = new StringBuilder(s).reverse().toString();
    return s.equals(reversed);
}
  1. 定义一个方法findPalindromes来找出所有是回文的字符串。
import java.util.ArrayList;
import java.util.List;

public class PalindromeFinder {
    public static List<String> findPalindromes(String[] strings) {
        List<String> palindromes = new ArrayList<>();

        for (String s : strings) {
            if (checkPalindrome(s)) {
                palindromes.add(s);
            }
        }

        return palindromes;
    }

    public static boolean checkPalindrome(String s) {
        String reversed = new StringBuilder(s).reverse().toString();
        return s.equals(reversed);
    }

    public static void main(String[] args) {
        String[] strings = {"level", "madam", "hello", "world", "racecar"};
        List<String> palindromes = findPalindromes(strings);

        System.out.println("Palindromes:");

        for (String palindrome : palindromes) {
            System.out.println(palindrome);
        }
    }
}
  1. 运行上述代码,得到输出结果如下:
Palindromes:
level
madam
racecar

流程图如下:

flowchart TD
    A(开始)
    B(定义方法checkPalindrome)
    C(定义方法findPalindromes)
    D(判断字符串是否为回文)
    E(添加到回文列表)
    F(遍历所有字符串)
    G(输出回文列表)
    H(结束)
    A-->B
    A-->C
    C-->F
    F-->D
    D-->E
    D-->F
    E-->F
    C-->G
    G-->H

甘特图如下:

gantt
    dateFormat  yyyy-MM-dd
    title 回文字符串查找
    section 解决方案
    定义方法       :done, 2021-10-01, 1d
    查找回文字符串   :done, 2021-10-02, 2d
    输出回文列表   :done, 2021-10-04, 1d