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

最长回文子串Java

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

最长回文子串Java

求解最长回文子串的几种方法(Java版)

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

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

示例 2:
输入:s = "cbbd"
输出:"bb"

提示:
1 <= s.length <= 1000
s 仅由数字和英文字母组成
解法一、暴力解法

作为一个小菜鸡,这是我做题最容易想到的方法,就是找出每个字符串,判断是否是回文串,记录最长的子串返回即可。这种方法很容易想到,但是时间复杂度为O(n³),会超出时间限制。

//暴力解法
class Solution {
	public String longestPalindrome(String s) {
		//长度为1的字符串的单独考虑
     	if(s.length()==1)  return s;
    	int maxlength=0;
     	String ans="";
     	for(int i=0;imaxlength){
                	ans=temp;
                	maxlength=ans.length();
            	}
         	}
    	}
     	return ans;
	}
	//判断是否是回文串的函数
	public boolean isPalindrome(String s){
    	int length=s.length();
    	for(int i=0;i 
方法二、中心扩展法 

回文串的最大的特点就是左右对称,所以,我们可以选定一个中心,每次循环往左右各扩展一位,只要左右这两个字符相等,那么它就是回文串。需要注意的是,偶数长度的回文串中心是最中间的两个字符,要把这两个字符作为中心扩展。

//中心扩散法
class Solution {
	public String longestPalindrome(String s) {
    	int length=s.length();
    	int start=0;
    	int end=0;
    	for(int i=0;ieven ? odd : even ;
        	//求出最长回文串的起始和终止位置,注意start与end的计算方法
        	if(temp>end-start){
            	start=i-(temp-1)/2;
            	end=i+temp/2;
        	}
    	}
    	return s.substring(start,end+1);
	}
	public int getLength(String s,int left,int right){
    	while(left>=0&&right 
方法三、动态规划 

动态规划就是一种利用空间换时间的办法,设置一个二维布尔数组temp[][],假设temp[i][j]表示s[i]~s[j]为回文串,那么,temp[i][j]=true等价于temp[i+1][j-1]=true&&s[i]=s[j],例如"bab"为回文串,那么"#bab#"肯定也是回文串。对于temp的初始化就是一个字符肯定是回文串、两个相等的字符也是回文串。

class Solution {
	public String longestPalindrome(String s) {
    	int length=s.length();
    	if(length==1) {
        	return s;
    	} 
    	boolean[][] temp=new boolean[length][length];
    	int start=0;
    	int maxlength=1;
    	//temp初始化
   	 	for(int i=0;imaxlength){
                	start=i;
                	maxlength=len;
            	}
        	}
   	 	}
    	return s.substring(start,start+maxlength);
	}
}
暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017233.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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