5 最長回文子串

2021-09-07 10:48:52 字數 2169 閱讀 6260

題目描述

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。

示例 1:

輸入: 「babad」

輸出: 「bab」

注意: 「aba」 也是乙個有效答案。

示例 2:

輸入: 「cbbd」

輸出: 「bb」

很明顯可以使用暴力破解,也可以使用動態規劃,但是還是馬拉車演算法比較靠譜,但是我這裡只是有了其一半不到的方式,

**:只超過了近一半的提交

三種方法解決這個問題

動態規劃實現的方法

具體的可以看看這個部落格

馬拉車演算法的具體描述,挺詳細的,我就直接搬運過來啦

class solution 

stringbuilder tem = new stringbuilder("#");

for (int i = 0; i < s.length(); i++)

// system.out.println(tem);

int start = 0;

int end = tem.length() - 1;

int result = new int[tem.length()];

result[0] = 1;

result[tem.length() - 1] = 1;

for (int i = 1; i < tem.length() -1 ; i++) else

}} // system.out.println(arrays.tostring(result));

//尋找result陣列中的最大值,並且記錄其下標,注意的是我們尋找的是除了第乙個和最後乙個的下標

int max = result[1];

int index = 1;

for (int i = 0; i < result.length - 1; i++)

} //接下來得到陣列中的原來元素,得到返回值

//前半部分下標

start = index - max / 2 + 1;

// system.out.println("star " + start);

// system.out.println("end " + end);

//後半部分下標

end = index + max /2 - 1 ;

stringbuilder tembuilder = new stringbuilder();

while (start <= end) else

start ++;

} return new string(tembuilder);

}}

2023年12月25日

重置,嘗試使用動態規劃初始化dp[i][i] = true;

和長度為2的dp[i][i + 1]

class solution 

boolean dp = new boolean[s.length()][s.length()];

// 初始化為 1

for (int i = 0; i < dp.length; i++)

for (int i = 0; i < dp.length - 1; i++)

}for (int i = 2; i < dp.length; i++) }}

int start = 0;

int end = 0;

int max = 0;

for (int i = 0; i < dp.length; i++) }}

return s.substring(start,end + 1);

}}

這個效率是真的高:

待學習

class solution 

int range = new int[2];

char chars = s.tochararray();

for (int i = 0; i < s.length(); i++)

return s.substring(range[0],range[1]+1);

}public static int findlongest(char chars,int range,int low)

return ans;

}}

5 最長回文子串

給定乙個字串s,找到s中最長的回文子串。你可以假設s長度最長為1000。示例 輸入 babad 輸出 bab 注意 aba 也是有效答案示例 輸入 cbbd 輸出 bb 方法1 用馬拉車演算法 字串動態規劃 來求最長回文子串時間複雜度可以達到o n 但是部落格裡面有個小失誤 這個id應該不是最大回文...

5 最長回文子串

給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb class solution def longestpalindrome self,s k len s olist...

5 最長回文子串

給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 這道題比較船艇的應該是dp求法,但鄙人的dp特別特別的差勁。所以我選用中心擴充套件演算法,掃一遍所有節點,把被掃...