public static List<String> longestPalindrome(String s) {
		String r = reversed(s);
		Set<String> palindromes = new HashSet<String>();
		SuffixTree st = new SuffixTree(Arrays.asList(s,r));
		int startCount = 0;
		char lastChar = '#';
		for(int i=0;i<s.length();i++){
			if(lastChar!=s.charAt(i)){
				startCount = i;
				lastChar = s.charAt(i);
			}
			int len = Utils.longestCommonExtention(st, 0, 1, startCount, s.length()-1-i)-1;
			if(len>=1){
				if(startCount!=i){//even
					palindromes.add(s.substring(startCount,startCount+len+1));
				}else{
					palindromes.add(s.substring(startCount-len,startCount+len+1));
				}
			}
		}
		Set<String> maxPalindromes = new HashSet<String>();
		int maxLen = Integer.MIN_VALUE;
		for(String str: palindromes){
			if(str.length()<maxLen)
				continue;
			else if(str.length()>maxLen)
				maxPalindromes.clear();
			maxPalindromes.add(str);
			maxLen = str.length();
		}
		return new ArrayList<String>(maxPalindromes);
	}