码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode_5_Longest Palindromic Substring

时间:2015-01-27 20:21:30      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:substring   longest palindromic   string   

描述:

Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.

思路:

刚开始非常天真,以为stringBuilder.reverse() 和stingBuilder通过错位滑行就可以比较了,当然不行!因为最长子串很有可能不是从头开始的。但也可以从头到尾取子串错位滑行比较,但是时间代价太高,pass。
想了好久,终于想到了,可以从每个字符开始,分别将字符前面和后面的字符进行比较,并将统计的结果给存储下来。但是也有可能最长回文子串的字符个数是偶数,这也是一种情况。将以上两种情况求得的结果进行比较,最长的回文子串就给求出来了。

代码:

public String longestPalindrome(String s) {
		String str;
		if(s==null)
			return null;
		if(s.length()<=1)
			return s;
		int len=s.length();
		int endIndex=len-1;
		int i=0;
		int arr1[]=new int[len];
		int arr2[]=new int[len];
		Arrays.fill(arr1, 0);
		Arrays.fill(arr2, 0);
		int start=0,end=0,count=0;
		for(i=0;i<endIndex;i++)
		{
			start=i;
			end=i+1;
			count=0;
			while(s.charAt(start)==s.charAt(end))
			{
				count+=2;
				start--;
				end++;
				if(start<0||end>endIndex)
					break;
			}
			arr1[i]=count;
		}
		for(i=1;i<endIndex;i++)
		{
			start=i-1;
			end=i+1;
			count=1;
			while(s.charAt(start)==s.charAt(end))
			{
				count+=2;
				start--;
				end++;
				if(start<0||end>endIndex)
					break;
			}
			arr2[i]=count;
		}
		int max1=arr1[0],max1Index=0;
		int max2=arr2[0],max2Index=0;
		for(i=1;i<len;i++)
		{
			if(max1<arr1[i])
			{
				max1=arr1[i];
				max1Index=i;
			}
			if(max2<arr2[i])
			{
				max2=arr2[i];
				max2Index=i;
			}
		}
		if(max1>max2)
			str=s.substring(max1Index-max1/2+1, max1Index+max1/2+1);
		else if(max1<max2)
			str=s.substring(max2Index-max2/2, max2Index+max2/2+1);
		else 
		{
			if(max1Index<max2Index)
				str=s.substring(max1Index-max1/2+1, max1Index+max1/2+1);
			else 
				str=s.substring(max2Index-max2/2, max2Index+max2/2+1);
		}
		return str;
	}


结果:

技术分享

leetcode_5_Longest Palindromic Substring

标签:substring   longest palindromic   string   

原文地址:http://blog.csdn.net/mnmlist/article/details/43199933

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!