前言
回文子串是练习数据结构和算法比较好的使用场景,可以同时练习到双指针、动态规划等一些列算法。
实现原理
优先暴力算法实现。这里定义最长回文子串长度的大小为maxLen,起点位置为0.
暴力循环过程中发现maxLen有所增长则更新maxLen和begin。
validCicle用于每次暴力循环中判断是否是回文子串。采用首尾双指针移动方式。
具体代码实现
java
class Solution {
public String longestPalindrome(String s) {
int maxLen=1;
int begin=0;
char[] charArray=s.toCharArray();
for(int i=0;i<charArray.length-1;i++){
for(int j=i+1;j<charArray.length;j++){
if(j-i+1>maxLen&&validCicle(charArray,i,j)){
maxLen=j-i+1;
begin=i;
}
}
}
return s.substring(begin,begin+maxLen);
}
public boolean validCicle(char[] charArray,int left,int right){
while(left<right){
if(charArray[left]==charArray[right]){
left++;
right--;
}else{
return false;
}
}
return true;
}
}
QA:待定