leetcode第五题Java解法最长回文子串

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

示例 1:

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

示例 2:

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

思路:构造一个方法来判断字符串的回文,并注意奇偶性,如“aba”和“bb”,然后遍历整个字符串,设置max来保存方法返回的值,res跟新返回值中的较大值。

class Solution {
    public String longestPalindrome(String s) {
     String res ="";
		if (s.length()<=1)
        {
			return s;
		}
		String m,n,max;
		int l=s.length();
		for(int i=0;i<s.length();i++)
		{
			m=compare(s,i,i);//奇数
			n=compare(s,i,i+1);//偶数
			if(m.length()>n.length())
				max=m;
			else {
				max=n;
			}
			if(max.length()>res.length())
				res=max;
		}
		return res;
    }
    static String compare(String s,int left,int right)
	{
		while(left>=0&&right<s.length()&&s.charAt(right)==s.charAt(left))
		{
			right++;
			left--;
		}
		return s.substring(left+1,right);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42882229/article/details/89671628