public static String longestPalindrome2(String s) {
	    
	    	String s1="#";
	    	
	    	for (int i=0;i<s.length(); i++)
	    	{
	    		s1 += s.charAt(i) + "#";
	    	}
	    	
	    	int[] P= new int[2*s.length()+1];
	    	for (int i=0; i<=s.length()*2; i++)
	    	{
	    		int len=0;
	    		
	    		for(int j=1; ((i-j)>=0)&&(i+j)<=s.length()*2; j++)
	    		{
	    			if (s1.charAt(i-j) == s1.charAt(j+i))
	    			{ 
	    				len = j;
	    			}
	    			else break;
	    		}
	    		
	    		P[i] = len;
	    	}
	    	
	    	int maxLen=0, maxPos=0;
	    	for (int i=0; i<=s.length()*2; i++)
	    	{
	    		if (P[i]>maxLen)
	    		{
	    			maxLen = P[i];
	    			maxPos = i;
	    		}
	    	}
	    	
	    	String s2 = "";
	    	for(int i=1;i<2*maxLen; i++)
	    	{
	    		if (i%2 == 1) 
	    		{
	    			s2 += s1.charAt(maxPos-maxLen+i);
	    		}
	    		
	    	}
	    	
	    	return s2;
	    }