訊精選練習題46 最長回文子串

2021-09-19 09:32:42 字數 1387 閱讀 9638

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

示例 1:

輸入:"babad"輸出:"bab"注意:"aba" 也是乙個有效答案。
示例 2:

輸入:"cbbd"輸出:"bb"
**:

class solution 

//獲取s[0,index]的最大回文子串

//如果s[0,index]本身就是回文,那麼它就是本次迴圈最大的回文子串,

//如果不是,則從s[0,index-1]獲取最大的回文子串

//res與s[0,index]獲取到的最大回文子串的長度進行比較,如果小於此次獲得的回文長度,則更新res

private string getlongestpalindrome(string s,int index)else

res=res.length()>memo[index].length()?res:memo[index];

return memo[index];

}if(memo[index]!=null)

return memo[index];

string levelpalidrome="";

for(int i=0;ilevelpalidrome.length()?s.substring(i,index+1):levelpalidrome;

//再次迴圈,i減小,s[0,i]的回文只會更短,所以沒有必要再迴圈查詢

break;}}

string lastpalindrome=getlongestpalindrome(s,index-1);

//獲取s[0,]

levelpalidrome=levelpalidrome.length()>lastpalindrome.length()?levelpalidrome:lastpalindrome;

//更新結果集

res=res.length()>levelpalidrome.length()?res:levelpalidrome;

memo[index]=levelpalidrome;

return memo[index];

}//判斷s從長度l開始到r為止是不是回文

private boolean ispalindrome(string s,int l,int r)}}

return res;

}}

leetcode練習 最長回文子串

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例一 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案 示例二 輸入 cbbd 輸出 bb 通過substring劃分子串,遍歷所有可能結果。結果效率太低 如圖 class solution ret...

騰訊精選練習題31 最長公共字首

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母a z。方法一 class solution l ...

lintcode練習 200 最長回文子串

給出乙個字串 假設長度最長為1000 求出它的最長回文子串,你可以假定只有乙個滿足條件的最長回文串。給出字串 abcdzdcab 它的最長回文子串為 cdzdc o n2 時間複雜度的演算法是可以接受的,如果你能用 o n 的演算法那自然更好。class solution param s input...