python求球面距離
阿新 • • 發佈:2021-02-11
5. 最長迴文子串
給你一個字串 s
,找到 s
中最長的迴文子串。
示例 1:
輸入:s = "babad"
輸出:"bab"
解釋:"aba" 同樣是符合題意的答案。
示例 2:
輸入:s = "cbbd"
輸出:"bb"
示例 3:
輸入:s = "a"
輸出:"a"
示例 4:
輸入:s = "ac"
輸出:"a"
提示:
1 <= s.length <= 1000
s
僅由數字和英文字母(大寫和/或小寫)組成
思路:
中心擴散法,即用當前的字元,或當前的兩個字元作為中心,不斷左右外擴,比較左右兩邊是否一直相等。
當字串長度為奇數時:
當字串長度為偶數時:
Java程式碼
class Solution {
//宣告儲存最長迴文子串的變數
String res = "";
public String longestPalindrome(String s) {
if(s==null||s.length() == 0) return res;
//分別以給定字串的每一個字元作為中心,實行中心擴散法
for(int i = 0;i<s.length();i++){
//考慮給定字串長度為奇數和偶數的情況
helper(s,i,i);
helper(s,i,i+1);
}
return res;
}
public void helper(String s,int left,int right){
while(left >= 0 && right < s.length() && s. charAt(left)==s.charAt(right)){
left--;
right++;
}
String temp = s.substring(left+1,right);
if(res.length() < temp.length()){
res = temp;
}
}
}