[leetcode6]N 字形變換

題目:
將一個(gè)給定字符串 s 根據(jù)給定的行數(shù) numRows 椿息,以從上往下、從左到右進(jìn)行 Z 字形排列沈矿。

比如輸入字符串為 "PAYPALISHIRING" 行數(shù)為 3 時(shí)痪欲,排列如下:

P A H N
A P L S I I G
Y I R
之后,你的輸出需要從左往右逐行讀取仓手,產(chǎn)生出一個(gè)新的字符串胖齐,比如:"PAHNAPLSIIGYIR"。

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

參考代碼:

def convert(self, s: str, numRows: int) -> str:
        if numRows < 2: 
            return s
        res = ["" for _ in range(numRows)]
        i =0
        flag = -1
        for c in s:
            res[i] += c
            if i == 0 or i == numRows - 1: 
                flag = -flag
            i += flag
        return "".join(res)

借鑒:
1嗽冒、索引不一定是單方向遞增或遞減呀伙,可雙方向加或減,借助一個(gè)flag添坊,可使得索引更加靈活区匠,根據(jù)需要遞增或遞減。
2、創(chuàng)建空字符串列表: res = ["" for _ in range(numRows)]
3驰弄、join()的使用:"".join(res)

string convert(string s, int numRows);

本人的漂亮爛代碼:

    def convert(self, s: str, numRows: int) -> str:
        if numRows == 1:
            return s
        res = ["" for i in range(numRows)]
        i = 0
        loop = numRows*2-2
        while i < len(s):
            mode = i%loop
            if 0 <= mode < numRows:
                index = mode
                res[index] += s[i]
            elif numRows <= mode < loop:
                index = loop - mode  
                res[index] += s[i]
            i += 1
        result = ''
        for c in res:
            result += c
        return result

反思:
1麻汰、每一行為一個(gè)字符串,總共numRows行戚篙,即定義擁有numRows個(gè)字符串的列表五鲫。
2、找規(guī)律:我們把每一個(gè)V字形上的元素個(gè)數(shù)作為一個(gè)循環(huán)岔擂,每一個(gè)循環(huán)都有numRows*2-2個(gè)元素位喂。這樣問(wèn)題就轉(zhuǎn)換成一個(gè)循環(huán)下的numRows個(gè)字符串賦值問(wèn)題。
3乱灵、對(duì)于完整的一列塑崖,直接就是s[0],s[1]~s[numRows1],但是單個(gè)元素的列痛倚,需要再次找規(guī)律规婆,發(fā)現(xiàn)loop減去s的index(取模后的)就是列表中字符串的index。
4蝉稳、最后就是字符串列表中各字符串連接抒蚜,輸出。這里有個(gè)小技巧耘戚,可以直接使用join()函數(shù)嗡髓。
5、join()將序列中的元素以指定的字符連接生成一個(gè)新的字符串收津。str.join(sequence)
比如:

>>> a=['a','bc','def','ghik']
>>> "".join(a)
'abcdefghik'
>>> '-'.join(a)
'a-bc-def-ghik'
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末饿这,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子撞秋,更是在濱河造成了極大的恐慌长捧,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件部服,死亡現(xiàn)場(chǎng)離奇詭異唆姐,居然都是意外死亡拗慨,警方通過(guò)查閱死者的電腦和手機(jī)廓八,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)赵抢,“玉大人剧蹂,你說(shuō)我怎么就攤上這事》橙矗” “怎么了宠叼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我冒冬,道長(zhǎng)伸蚯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任简烤,我火速辦了婚禮剂邮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘横侦。我一直安慰自己挥萌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布枉侧。 她就那樣靜靜地躺著引瀑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪榨馁。 梳的紋絲不亂的頭發(fā)上憨栽,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音辆影,去河邊找鬼徒像。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蛙讥,可吹牛的內(nèi)容都是我干的锯蛀。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼次慢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼旁涤!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起迫像,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤劈愚,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后闻妓,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體菌羽,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年由缆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了注祖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡均唉,死狀恐怖是晨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舔箭,我是刑警寧澤罩缴,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響箫章,放射性物質(zhì)發(fā)生泄漏烙荷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一檬寂、第九天 我趴在偏房一處隱蔽的房頂上張望奢讨。 院中可真熱鬧,春花似錦焰薄、人聲如沸拿诸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)亩码。三九已至,卻和暖如春野瘦,著一層夾襖步出監(jiān)牢的瞬間描沟,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工鞭光, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吏廉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓惰许,卻偏偏與公主長(zhǎng)得像席覆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子汹买,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • 題目描述: 將一個(gè)給定字符串根據(jù)給定的行數(shù)佩伤,以從上往下、從左到右進(jìn)行 Z 字形排列晦毙。比如輸入字符串為 "LEETC...
    LeeYunFeng閱讀 941評(píng)論 0 50
  • Z 字形變換 題目 將一個(gè)給定字符串根據(jù)給定的行數(shù)生巡,以從上往下、從左到右進(jìn)行 Z 字形排列见妒。 比如輸入字符串為 "...
    SunnyQjm閱讀 101評(píng)論 0 1
  • 一孤荣、題目 將一個(gè)給定字符串 s 根據(jù)給定的行數(shù) numRows ,以從上往下须揣、從左到右進(jìn)行 Z 字形排列盐股。 比如輸...
    爪哇繆斯閱讀 116評(píng)論 0 1
  • 題目描述 將一個(gè)給定字符串根據(jù)給定的行數(shù)遂庄,以從上往下寥院、從左到右進(jìn)行 Z 字形排列劲赠。 比如輸入字符串為 "LEETC...
    河海中最菜閱讀 271評(píng)論 0 0
  • 題目 將一個(gè)給定字符串根據(jù)給定的行數(shù),以從上往下、從左到右進(jìn)行 Z 字形排列凛澎。 比如輸入字符串為 "LEETCOD...
    LonnieQ閱讀 161評(píng)論 0 1