palindromic java_LeetCode(java)5. Longest Palindromic Substring
Given a stringS, find the longest palindromic substring inS. You may assume that the maximum length ofSis 1000, and there exists one unique longest palindromic substring.
java
題目描述:找出一個字符串中的最長回文子串。算法
本人思路:ide
相似于網上所寫的中心擴展法。從字符串中的每一個位置開始向兩邊擴展,找到最長的回文。spa
時間復雜度:O(n2),leetcode經過時間:15ms。code
public class Solution {
public static String longestPalindrome(String s) {
char[] cs = s.toCharArray();
int begin=0,end=0;
int size = s.length();
int out = 0;//中心位置
for(int befor=out,after=out;out
{
//判斷是否abcba類回文
for(;befor>0&&after
{
if(cs[befor-1] != cs[after+1])
break;
}
if(befor != after && after-befor>end-begin)
{
end=after;
begin=befor;
}
//判斷是否abccba類回文
for(befor = out,after = out;befor>=0&&after
{
if(cs[befor] != cs[after+1])
break;
}
if(befor != after && after-(++befor)>end-begin)
{
end=after;
begin=befor;
}
//判斷是否aaaaaa類回文
for(befor=out,after=out;after
{
if(cs[befor] != cs[after+1])
break;
}
if(after!=befor && after-befor>end-begin)
{
end=after;
begin=befor;
out = after;//跳太重復的序列
}
}
return s.substring(begin, end+1);
}
}
除了這種解法還有如下幾種解法:leetcode
①暴力解決法:遍歷字符串中的每一個子串,判斷是否回文串,并更新最長回文串。字符串
②動態規劃:思想為:若 [ i , j ] 為回文,則 [ i+1, j-1 ]也為回文。string
③Manacher's 算法。it
附上大神制做的PPT(很詳細):http://faculty.utpa.edu/liuy2/algorithmSlides/Longest-Palindromic-Substring.pptxio
總結
以上是生活随笔為你收集整理的palindromic java_LeetCode(java)5. Longest Palindromic Substring的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql无法安装弹出Log_[MySQ
- 下一篇: 【anaconda软件】Anaconda