JAVA笔试算法题02:找“最长回文“

102 阅读1分钟

JAVA笔试算法题02:找“最长回文“

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。
示例 2:
输入: “cbbd”
输出: “bb”

public class HuiWen {
    public static void main(String[] args) {
        String s = "banana";
        LongHuiWen(s);
    }
    public static void LongHuiWen(String s){
        int l = 0;
        String sout = null;
        for(int i = 0;i<s.length();i++){
            for(int j = i;j<s.length();j++){
                String s1 = s.substring(i,j+1);
                if(IsHuiWen(s1)) {
                    if(s1.length() > l){
                        l = s1.length();
                        sout = s1;
                    }
                }
            }
        }
        System.out.println(sout);
    }
    public static boolean IsHuiWen(String s){
        char[] a = s.toCharArray();
        char[] a1;
        char[] a2;
        if(a.length%2 == 1){
            a1 = s.substring(0, (a.length - 1) / 2).toCharArray();
            a2 = s.substring((a.length + 1) / 2, a.length).toCharArray();
            if (a1.length != 0 || a2.length != 0) {
                int num = 1;
                for (char c : a1) {
                    if (c != a2[a1.length - num]) {
                        return false;
                    }
                    num += 1;
                }
            }
        }
        else{
            a1 = s.substring(0, a.length / 2).toCharArray();
            a2 = s.substring(a.length / 2, a.length).toCharArray();
            int num = 1;
            for (char c : a1) {
                if (c != a2[a1.length - num]) {
                    return false;
                }
                num += 1;
            }
        }
        return true;
    }
}

创作打卡挑战赛

赢取流量/现金/CSDN周边激励大奖