题解 | #最长回文子串#
最长回文子串
http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
暴力解法,时间复杂度O(n^2) 空间复杂度O(1);
public int getLongestPalindrome(String A, int n) { // write code here int max=0; for(int i=0;i<n;i++){ //遍历每个字符,每次都把当前字符当做回文的中心 int sin=0; //奇数回文字符串的长度 int dou=0; //偶数回文字符串的长度 for(int j=1;j<A.length();j++){ //奇数处理 int pre = i-j; //当前字符的第前j个 int next = i+j; //当前字符的第后j个 if(pre<0||next>=A.length()){ //越界则跳出当前循环 break; } if(A.charAt(pre)==A.charAt(next)){//前后第j个相等则数量++ sin++; }else { //否则就跳出当前循环 break; } } for(int j=1;j<A.length();j++){ //当做偶数,做同样的处理 int pre = i-j+1; int next = i+j; if(pre<0||next>=A.length()){ break; } if(A.charAt(pre)==A.charAt(next)){ dou++; }else { break; } } max=Math.max(max,Math.max(2*sin+1,2*dou));//比较后更新最大值 } return max; }