双指针法解决最长回文子串 Java
双指针法解决最长回文子串:
public class Test { //寻找最长回文串 public static String find(String str,int l,int r){ while(l>=0 && r<str.length() && str.charAt(l)==str.charAt(r)){ l--; r++; } return str.substring(l+1,r);//subString截串是左闭右开型 } public static String findLongest(String str){ String s=""; for (int i = 0; i < str.length(); i++) { //寻找以str.charAt(i)为中心的最长回文子串 String s1=find(str,i,i); //寻找以str.charAt(i) str.charAt(i) 为中心的最长子串 String s2=find(str,i,i+1); //s=longest(s,s1,s2) s=s.length()>s1.length()?s:s1; s=s.length()>s2.length()?s:s2; } return s; } public static void main(String[] args) { String s="abacd"; System.out.println(findLongest(s)); // aba } }