Java回文字符串(获取字符串中最长的回文字符串)

场景

面试官: 你这边对回文字符串有没有了解? 能找出任意一个字符串中长度最长的回文字符串吗?

ME: ......

面完后去了解了一下回文字符串, 在此简单记录一下.

什么是回文字符串?

“回文串”是一个正读和反读都一样的字符串,比如“abcba”或者“noon”等等就是回文串。

代码实现

对于面试官的问题, 私下写了一个实现法案, 测试了一下,能满足这个需求~

     /**
     * 找出字符串中最大的回文字符串
     * @param str  传入的字符串
     * @return
     */
    private String getMaxHuiWenStr(String str) {
        int length = str.length();
        String maxString = "";
        for (int i = 0; i < length; i++) {
            for (int j = i + 1; j <= length; j++) {
                String tempStr = str.substring(i, j);
                if (isHuiWenStr(tempStr) && tempStr.length() > maxString.length()) {
                    maxString = tempStr;
                }
            }
        }
        return maxString;
    }

    private boolean isHuiWenStr(String str) {
        if (str.length() == 1) {
            return false;
        }
        boolean flag = true;
        int length = str.length();
        char[] tempChar = str.toCharArray();
        for (int i = 0, j = length - 1; i <= j; i++, j--) {
            if (tempChar[i] != tempChar[j]) {
                flag = false;
            }
        }
        return flag;
    }

你可能感兴趣的:(Java回文字符串(获取字符串中最长的回文字符串))