JAVA笔试算法题02:找“最长回文“
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。
示例 2:
输入: “cbbd”
输出: “bb”
public class HuiWen {
public static void main(String[] args) {
String s = "banana";
LongHuiWen(s);
}
public static void LongHuiWen(String s){
int l = 0;
String sout = null;
for(int i = 0;i<s.length();i++){
for(int j = i;j<s.length();j++){
String s1 = s.substring(i,j+1);
if(IsHuiWen(s1)) {
if(s1.length() > l){
l = s1.length();
sout = s1;
}
}
}
}
System.out.println(sout);
}
public static boolean IsHuiWen(String s){
char[] a = s.toCharArray();
char[] a1;
char[] a2;
if(a.length%2 == 1){
a1 = s.substring(0, (a.length - 1) / 2).toCharArray();
a2 = s.substring((a.length + 1) / 2, a.length).toCharArray();
if (a1.length != 0 || a2.length != 0) {
int num = 1;
for (char c : a1) {
if (c != a2[a1.length - num]) {
return false;
}
num += 1;
}
}
}
else{
a1 = s.substring(0, a.length / 2).toCharArray();
a2 = s.substring(a.length / 2, a.length).toCharArray();
int num = 1;
for (char c : a1) {
if (c != a2[a1.length - num]) {
return false;
}
num += 1;
}
}
return true;
}
}