給定乙個字串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...