栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

算法刷题记录

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

算法刷题记录

算法刷题记录
  • 算法(力扣)- Java
    • 动态规划(解法)
      • 最长回文字符串

算法(力扣)- Java

声明:都是自己刷题中的解法(有的可能不是最好的解法),用于自己分析,记录

动态规划(解法) 最长回文字符串

题目:给你一个字符串 s,找到 s 中最长的回文子串。

思路:

1.如果字符串的长度小于2,则字符串时回文字符串

2.找到最长字符出啊,使用substring方法截取返回。

3.所以需要找到最长字符串的起始位置和长度。定义起始位置begin和最大长度maxLen

4.可以定义一个存储boolean值的二维数组,来存放回文数。

5.依次从字符串长度为0-字符串长度的字符串中找回文数。

6.在找的过程当中,i - j < 2的情况下,找到所有如aa,bb,cc和单独的a ,b,c,d等的回文数。

7.在找的过程当中,i - j >=2的情况下,通过每次判断bln[j+1] [i-1]来去确定从j+1de位置到i-1的位置时回文字符串。再判断i和j位置的值是否相等,来确定bln[j] [i]是回文的。(这里会依次从低长度慢慢找到高长度)/

8.在找的过程当中,通过每次bln[j] [i]找到回文字符串,并且该字符串的长度i-j+1大于最大长度maxLen。从而每次更新begin和maxLen的值。

class Solution {
    public String longestPalindrome(String s) {
        if(s.length() < 2){
            return s;
        }
        int maxLen = 0;
        int begin = 0;
        boolean[][] bln = new boolean[s.length()][s.length()];
        for(int i=0;imaxLen){
                    begin = j;
                    maxLen = i-j+1;
                }
            }
        }
        return s.substring(begin,begin+maxLen);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/592367.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号