leetcode刷題日記——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 僅由數(shù)字和英文字母(大寫和/或小寫)組成

1荸百、暴力解法

遍歷所有的子串闻伶,并判斷每一個子串是否為回文串,最后即可得到最長的回文子串够话。

class Solution {
    public String longestPalindrome(String s) {
        int length = s.length();
        int maxLength = 0;
        String res = "";
        for(int subLength = 1; subLength <= length; subLength++){
            for(int index = 0; index + subLength <= length; index++){
                String subStr = s.substring(index, index + subLength);
                if(isPalindrome(subStr)){
                    if(subStr.length() > maxLength){
                        maxLength = subStr.length();
                        res = "" + subStr;
                    }
                }
            }
        }
        return res;
    }

    public boolean isPalindrome(String s){
        int length = s.length();
        int left = 0;
        int right = length - 1;
        while(left <= right){
            if(s.charAt(left) != s.charAt(right)){
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
}

兩層for循環(huán)進行兩次遍歷蓝翰,判斷回文串也要進行一次遍歷光绕,則時間復雜度達到了O(n3),直接提交會超時畜份。但是參考官方題解诞帐,暴力解法也是能通過的。在以上解法中每判斷一次回文子串都需要截取一次字符串爆雹,會有額外的性能消耗停蕉,則不再截取字符串,只記錄最長回文子串的起始位置和長度钙态,最后返回的時候再截取子串慧起。當字符串長度為1時不需要判斷直接返回即可。進行剪枝操作后可勉強通過册倒。

//執(zhí)行用時:2850 ms
class Solution {
    public String longestPalindrome(String s) {
        int length = s.length();
        if(length < 2){
            return s;
        }
        int maxLength = 1;
        int resLeft = 0;
        for(int subLength = 2; subLength <= length; subLength++){
            for(int index = 0; index < length - subLength + 1; index++){
                if(isPalindrome(s, index, index + subLength - 1)){
                    if(subLength > maxLength){
                        maxLength = subLength;
                        resLeft = index;
                    }
                }
            }
        }
        return s.substring(resLeft, resLeft + maxLength);
    }

    public boolean isPalindrome(String s, int left, int right){
        int indexL = left;
        int indexR = right;
        while(indexL <= indexR){
            if(s.charAt(indexL) != s.charAt(indexR)){
                return false;
            }
            indexL++;
            indexR--;
        }
        return true;
    }
}

時間復雜度:O(n3)
空間復雜度:O(1)蚓挤,僅消耗常數(shù)空間

2、動態(tài)規(guī)劃

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末剩失,一起剝皮案震驚了整個濱河市屈尼,隨后出現(xiàn)的幾起案子册着,更是在濱河造成了極大的恐慌拴孤,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甲捏,死亡現(xiàn)場離奇詭異演熟,居然都是意外死亡,警方通過查閱死者的電腦和手機司顿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門芒粹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人大溜,你說我怎么就攤上這事化漆。” “怎么了钦奋?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵座云,是天一觀的道長。 經常有香客問我付材,道長朦拖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任厌衔,我火速辦了婚禮璧帝,結果婚禮上,老公的妹妹穿的比我還像新娘富寿。我一直安慰自己睬隶,他們只是感情好锣夹,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著理疙,像睡著了一般晕城。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上窖贤,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天浇借,我揣著相機與錄音,去河邊找鬼崇众。 笑死墩虹,一個胖子當著我的面吹牛,可吹牛的內容都是我干的授嘀。 我是一名探鬼主播物咳,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蹄皱!你這毒婦竟也來了览闰?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤巷折,失蹤者是張志新(化名)和其女友劉穎压鉴,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锻拘,經...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡油吭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了署拟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婉宰。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖推穷,靈堂內的尸體忽然破棺而出心包,到底是詐尸還是另有隱情,我是刑警寧澤馒铃,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布蟹腾,位于F島的核電站,受9級特大地震影響骗露,放射性物質發(fā)生泄漏岭佳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一萧锉、第九天 我趴在偏房一處隱蔽的房頂上張望珊随。 院中可真熱鬧,春花似錦、人聲如沸叶洞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衩辟。三九已至螟炫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間艺晴,已是汗流浹背昼钻。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留封寞,地道東北人然评。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像狈究,于是被迫代替她去往敵國和親碗淌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容