美文网首页
Java算法题2: 最长的回文子串求解

Java算法题2: 最长的回文子串求解

作者: 会九卦的兔子 | 来源:发表于2018-07-15 23:49 被阅读0次

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设的最大长度为1000。

示例 1:

    输入:"babad"输出:"bab"注意:"aba"也是一个有效答案。

示例 2:

    输入:"cbbd"输出:"bb"


解题思路很简单:

    为了找到所要的回文字符串,我们需要遍历整一个字符串。

    那么我们可以通过嵌套循环的方式截取字符串来判断是否为回文字符串;

    如果是,并且对比之前存储的最大回文字符maxString,比maxString长度还长的话则替换该字符。

    如何判断是否为回文字符串?

    从两端 i , j 同时开始循环,对比两个字母的如果都是相等的,那么就是回文字符了,约束条件是 i <= j ,即是中间的位置。


public static String checkStr(String str) {

    str = str.toLowerCase();

    if(null == str || str.length() == 0) {

            return "参数错误,参数为空!";

    }

    // 字符的长度

    int length = str.length();

    // 存放最终得到的最大回文字符结果

    String maxString = "";

     // 双重循环截取我们所要判断的字符串

    for (int i = 0; i < length; i++) {

            for(int j=i; j < length+1; j++) {

                    String cutStr = str.substring(i, j);

                    // 判断截取的字符串是否为回文字符串,且大于之前的maxString的长度时,则替换

                    if(isHuiwen(cutStr) && cutStr.length() > maxString.length()) {

                            maxString = cutStr;

                    }

            }

        }

        if (maxString.length() >= 2) {

                return maxString;

        }else {

                return null;

         }

}

private static boolean isHuiwen(String cutStr) {

        boolean flag = true;

        int length = cutStr.length();

        char arrayStr[] = cutStr.toCharArray();

        // 从两端分别开始对比

        for (int i = 0, j = length-1; i<=j; i++, j--) {

                if(arrayStr[i]!=arrayStr[j]) {

                        flag = false;

                }

          }

        return flag;

}

相关文章

  • Java算法题2: 最长的回文子串求解

    给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为1000。 示例 1: 输入:"babad"输...

  • 最长回文子串问题—Manacher算法

    最长回文串问题是一个经典的算法题。 0. 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度。如果...

  • Manacher算法

    前言 Manacher算法用于求解字符串中最长的回文子串,它和KMP算法的改进方式很类似,都是基于暴力求解的方法,...

  • 《最长回文子串》

    python算法题之《最长回文子串》 题目要求 代码及解析 结果

  • LeetCode 第647题:回文子串

    1、前言 2、思路 此题与最长回文子串很像,只不过那个是求最长的回文子串,而这个是求回文子串的数目。但是他们的解法...

  • 最长回文子串

    题述 求一个子串的最长回文子串是常见算法题,所谓的回文子串就是正着读和反着读是一样的,其leetcode地址如下:...

  • 最长回文子串

    最长回文子串——Manacher 算法 1. 问题定义 最长回文字符串问题:给定一个字符串,求它的最长回文子串长度...

  • Manacher's Algorithm算法分析Java

    Manacher's Algorithm俗称马拉车算法,对于求字符串中最长回文子串效率极高。 在求最长回文子串的时...

  • 第22章 最长公共子序列和编辑距离

    1、最长公共子序列 算法分析 时间复杂度 Java 代码 2、回文串 算法分析 区间dp 从当前样子变成初始状态需...

  • iOS面试题汇总---算法类

    字符串 【3】最长回文子串 【3】最长无重复子串 【1*】字符串转数字 【4】KMP 算法 【2】字符串全排列 【...

网友评论

      本文标题:Java算法题2: 最长的回文子串求解

      本文链接:https://www.haomeiwen.com/subject/zvpmpftx.html