題目: 給定乙個字串s,在s中找到最長的字串。您可以假設s的最大長度為1000。
example 1:
輸入: 「babad」。
輸出: 「bab」。
注:「aba」也是乙個有效的答案。
思想:中心結點法,就是遍歷整個字串,將每個點分別都設為中心結點,然後第二個遍歷是分別對設定的中心向左右擴充套件,所以複雜度為o(n^2)。
比如對於字串abba,先檢測關於字元對稱,設定中心為a,發現最長回文為a,再檢測關於間隔對稱,給定中心為ab之間間隔,發現最長回文為空。然後座標前移,設定中心為b,發現最長回文為b,再設定中心為bb的間隔,發現最長回文為abba,為目前最長,所以最長回文設為abba,然後座標前移,繼續檢測。
public string longestpalindrome(string s)
//偶數情況
high++;
string s2 = getlongestpalindromebyindex(low, high, s);
if(s2.length()>longestpalindrome .length())
}return longestpalindrome;
} //判斷以某點為中心點的回文串大小
public string getlongestpalindromebyindex(int low,int high, string s)
return s.substring(low+ 1, high);
}
Leetcode 每日一練
最小棧 設計乙個支援 push pop top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 輸入 minstack push push push getmin pop top ge...
Leetcode 每日一練
leetcode 每日一練 擁有最多糖果的孩子 給你乙個陣列 candies 和乙個整數 extracandies 其中 candies i 代表第 i 個孩子擁有的糖果數目。對每乙個孩子,檢查是否存在一種方案,將額外的 extracandies 個糖果分配給孩子們之後,此孩子有 最多 的糖果。注意...
Leetcode 每日一練
猜數字 小a 和 小b 在玩猜數字。小b 每次從 1,2,3 中隨機選擇乙個,小a 每次也從 1,2,3 中選擇乙個猜。他們一共進行三次這個遊戲,請返回 小a 猜對了幾次?輸入的guess陣列為 小a 每次的猜測,answer陣列為 小b 每次的選擇。guess和answer的長度都等於3。示例 1...