首页 > 其他分享 >求: 最长回文子串

求: 最长回文子串

时间:2022-09-30 18:23:12浏览次数:51  
标签:子串 right end int max start 回文 最长 left

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

 

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:

输入:s = "cbbd"
输出:"bb"
 

提示:

1 <= s.length <= 1000
s 仅由数字和英文字母组成

public String longestPalindrome(String s) {
        int start = 0, end = 0;
        for (int i = 0; i < s.length(); i++) {
            int len1 = expandAroundCenter(s,i,i);//abcba
            int len2 = expandAroundCenter(s,i,i+1);//aabbaa
            int max = Math.max(len1, len2);
            if(max > end - start){//计算 长度为奇数或者偶数的 的开始结束索引
                start = i - (max-1)/2;
                end = i + max/2;
            }
        }
        return s.substring(start,end+1);//左开右闭
    }

    /**
     * 计算子串长度
     * @param s
     * @param left
     * @param right
     * @return
     */
    public int expandAroundCenter(String s, int left, int right) {
        while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
            left--;
            right++;
        }
        return right - left -1;
    }

转载自LeetCode

标签:子串,right,end,int,max,start,回文,最长,left
From: https://www.cnblogs.com/itzkd/p/16745797.html

相关文章

  • LeetCode剑指 Offer II 093 最长斐波那契数列
    LeetCode剑指OfferII093最长斐波那契数列classSolution:deflenLongestFibSubseq(self,arr:List[int])->int:n,loc,ans=len(arr),{},0......
  • LeetCode[3] 无重复字符的最长子串
    1无重复字符的最长子串1.1题目描述        给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例 1:输入:s="abcabcbb"输出:3解释:......
  • P1944 最长括号匹配
    #include<bits/stdc++.h>usingnamespacestd;intn,ans,num;inta[1000001];chars[1000001];intmain(){ scanf("%s",s+1); n=strlen(s+1); for(inti=2;i<=n......
  • 提取最长转录本
    点击查看代码#!/usr/bin/envpython#-*-coding=utf-8-*-'''提取序列文件中最长的转录本ID需要修改######位置的参数以及open的目录'''importsysimport......
  • Q4.4.6.1. 区间最长不上升子串
    Q4.4.6.1.区间最长不上升子串BZOJ4491.我也不知道题目名字是什么差分,转化为连续区间上最长>=0或<=0的区间每个节点维护区间前缀最大值,后缀最大值,区间答案......
  • 动态规划之最长递增子序列
    给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0,3,1......
  • lc234判断回文链表 isPalindrome python3
    给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。classSolution:defisPalindrome(self,head:ListNode)->bool:v......
  • 895. 最长上升子序列
    最基础的最长上升子序列问题这里用的是dp做法定义f[i]为从1~i的所有上升子序列最大的长度双重循环,以a[i]为最后一个数,枚举所有小于a[i]的数a[j]作为倒数第二个数,对于所......
  • LeetCode[2414. 最长的字母序连续子字符串的长度]
    2414.最长的字母序连续子字符串的长度双指针classSolution{public:intlongestContinuousSubstring(strings){intres=0;for(inti=......
  • 最长递增子段
    ★实验任务YZF有一个序列A,由n个整数组成。我们将子段A称为Ai、Ai+1、Ai+2、…Aj(1<=i<=j=n)表示A的子段。你的任务是找到A的最长的子段,这样就可以从子段最多......