算法練習(xí)三

5. 最長(zhǎng)回文子串

給定一個(gè)字符串 s羞海,找到 s 中最長(zhǎng)的回文子串。你可以假設(shè) s 的最大長(zhǎng)度為1000。

示例 1:

輸入: "babad"
輸出: "bab"
注意: "aba"也是一個(gè)有效答案判沟。
示例 2:

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

思路:常規(guī)暴力法:求所有子串,逐個(gè)驗(yàn)證是否是回文子串利赋,n的平方*n水评,時(shí)間復(fù)雜度O(n3);
動(dòng)態(tài)規(guī)劃:動(dòng)態(tài)規(guī)劃是一個(gè)不錯(cuò)的思路,首先媚送,一個(gè)首尾索引分別為i和j的字符串是不是回文中燥,只需要比對(duì)i和j是否相等,并且i+1到j(luò)-1的字符串是否為回文子串塘偎。這樣我們記憶dp[i][j]是否為回文字符串的所有結(jié)果疗涉。如果是一個(gè)字符肯定是回文子串,如果是兩個(gè)字符吟秩,相等就是回文子串咱扣。由于保存了dp[i][j]的結(jié)果,時(shí)間復(fù)雜度O(n2),空間復(fù)雜度O(n2)

class Solution {
public:
    string longestPalindrome(string s) {
        //字符串長(zhǎng)度
        int size=s.size();
        bool dp[size][size];
        // fill_n(&dp[size][size],size*size,false);
        int max_len=1; //保存最長(zhǎng)回文子串長(zhǎng)度
        int start=0;   //保存最長(zhǎng)回文子串起點(diǎn)
        
        //i是右標(biāo)涵防,開始遍歷i
        for(int i=0;i<size;++i)
        {
            //j是左標(biāo)
            for(int j=0;j<=i;++j)
            {
                if(i-j<2){
                    //兩個(gè)字符的時(shí)候闹伪,直接比對(duì)值 一個(gè)字符就是true
                    dp[j][i]=(s[i]==s[j]);
                }
                else{
                    //動(dòng)態(tài)規(guī)劃思路,j+1的和i-1一定是已經(jīng)填充過得值壮池,因?yàn)閕是從左往右遍歷的
                    dp[j][i]=(s[i]==s[j] && dp[j+1][i-1]);
                }
                if(dp[j][i] && max_len<(i-j+1))
                {
                    max_len=i-j+1;
                    start=j;
                }
            }
        }
        return s.substr(start,max_len);
    }
};

小思考:空間復(fù)雜度還是可以優(yōu)化的偏瓤,因?yàn)橹恍枰敵鲎畲蠡匚淖哟梢灾槐4嫔弦惠喌慕Y(jié)果值椰憋。不保存全部厅克。

6. Z字形變換

將字符串 "PAYPALISHIRING" 以Z字形排列成給定的行數(shù):

P A H N
A P L S I I G
Y I R
之后從左往右,逐行讀取字符:"PAHNAPLSIIGYIR"

實(shí)現(xiàn)一個(gè)將字符串進(jìn)行指定行數(shù)變換的函數(shù):

string convert(string s, int numRows);
示例 1:

輸入: s = "PAYPALISHIRING", numRows = 3
輸出: "PAHNAPLSIIGYIR"
示例 2:

輸入: s = "PAYPALISHIRING", numRows = 4
輸出: "PINALSIGYAHRPI"
解釋:

P I N
A L S I G
Y A H R
P I

這是一道常規(guī)找規(guī)律的題目橙依,我們按行遍歷即可证舟,時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(n)

class Solution {
public:
    string convert(string s, int numRows) {

        if (numRows == 1) return s;

        string ret;
        int n = s.size();
        int cycleLen = 2 * numRows - 2;

        for (int i = 0; i < numRows; i++) {
            for (int j = 0; j + i < n; j += cycleLen) {
                ret += s[j + i];
                //不是第一行也不是最后一行硕旗,中間的字符
                if (i != 0 && i != numRows - 1 && j + cycleLen - i < n)
                    ret += s[j + cycleLen - i];
            }
        }
        return ret;
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市女责,隨后出現(xiàn)的幾起案子漆枚,更是在濱河造成了極大的恐慌,老刑警劉巖抵知,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浪读,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡辛藻,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門互订,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吱肌,“玉大人,你說我怎么就攤上這事仰禽〉” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵吐葵,是天一觀的道長(zhǎng)规揪。 經(jīng)常有香客問我,道長(zhǎng)温峭,這世上最難降的妖魔是什么猛铅? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮凤藏,結(jié)果婚禮上奸忽,老公的妹妹穿的比我還像新娘。我一直安慰自己揖庄,他們只是感情好栗菜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蹄梢,像睡著了一般疙筹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上禁炒,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天而咆,我揣著相機(jī)與錄音,去河邊找鬼齐苛。 笑死翘盖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的凹蜂。 我是一名探鬼主播馍驯,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼阁危,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了汰瘫?” 一聲冷哼從身側(cè)響起狂打,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎混弥,沒想到半個(gè)月后趴乡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蝗拿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年晾捏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哀托。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惦辛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出仓手,到底是詐尸還是另有隱情胖齐,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布嗽冒,位于F島的核電站呀伙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏添坊。R本人自食惡果不足惜剿另,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贬蛙。 院中可真熱鬧驰弄,春花似錦、人聲如沸速客。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽溺职。三九已至岔擂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浪耘,已是汗流浹背乱灵。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留七冲,地道東北人痛倚。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像澜躺,于是被迫代替她去往敵國和親蝉稳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抒蚜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,145評(píng)論 0 13
  • 在C語言中,五種基本數(shù)據(jù)類型存儲(chǔ)空間長(zhǎng)度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,340評(píng)論 0 2
  • 各校歷年復(fù)試機(jī)試試題 清華耘戚、北大嗡髓、華科試題詳細(xì)筆記部分,少筆記部分與少數(shù)leetcode【含個(gè)人整理筆記】 一收津、詳...
    十里江城閱讀 1,185評(píng)論 0 1
  • 本文已授權(quán)微信公眾號(hào):鴻洋(hongyangAndroid)在微信公眾號(hào)平臺(tái)原創(chuàng)首發(fā)饿这。 研究AndroidStud...
    applixy閱讀 3,178評(píng)論 1 4
  • 2015年4月19日吻贿,憑借電影《竊聽風(fēng)云3》中的精彩表現(xiàn)唆姐,劉青云獲得了第34屆香港電影金像獎(jiǎng)最佳男主角。 熟悉他的...
    文_懿閱讀 1,191評(píng)論 0 1