public class Solution {
/**
*
* @param s string字符串
* @return string字符串
*/
public String longestPalindrome (String s) {
int sLength = s.length();
if(s == null || sLength == 0)
return "";
if(sLength == 1)
return s;
// 存放最长的那个字符串
String longString = "";
// 字符串长度
int size = longString.length();
// 从第一个字符开始遍历
for(int i=0; i<sLength; i++){
for(int j=i; j<sLength; j++){
// 如果所你选中的子字符串没有最大的字符串那么长,或者子字符串,首尾的字符不
// 相等,直接就取消判断是不是回文
if(j-i+1 <= size || s.charAt(i) != s.charAt(j))
continue;
String temp = s.substring(i, j+1);
if(isReverse(temp)){
longString = temp;
size = longString.length();
}
}
if((s.length() - i) < longString.length())
break;
}
return longString;
}
// 判断是否是回文
public static boolean isReverse(String s){
// 如果长度为1,无需判断
if(s.length() == 1)
return true;
// 转化为字符数组
char[] array = s.toCharArray();
// 元素间距
int space = s.length() - 1;
// 奇数的话,中间那个元素无需判断
for(int i=0; i<array.length/2; i++){
if(array[i] != array[space-i]){
return false;
}
}
return true;
}
}
找出给出的字符串S中最长的回文子串。假设S的最大长度为1000,并且只存在唯一解。
最新推荐文章于 2021-02-13 07:05:31 发布