[LeetCode] 6. ZigZag Conversion (medium)

Welcome To My Blog

6. ZigZag Conversion (medium)

6.1.png

題目意思:將一個字符串按照之字形(zigzag)排列,然后按行輸出,如下圖:
6.2.png

  1. 核心思想:之字形排列可以分解為兩步:向下豎直排列;斜向上排列,豎直在前,斜在后,通過兩個循環(huán)分別實現兩個分解動作,再通過一個大循環(huán)遍歷所有元素
  2. 數組約束i與StringBuffer約束row相互獨立,故分別判斷i與row是否越界
  3. 學習了StringBuffer的用法,這里可以用StringBuilder,速度更快.因為StringBuffer是線程安全的,但StringBuilder不是,所以StringBuilder更快
  4. complexity analysis:
    • time complexity: O(n / (2numsRow - 2))
    • space complexity: O(n)
class Solution {
    public String convert(String s, int numRows) {
        char[] c = s.toCharArray();
        int n = c.length;
        StringBuffer[] currRow = new StringBuffer[numRows];
        // 初始化StringBuffer
        for (int row = 0; row < numRows; row++)
            currRow[row] = new StringBuffer();
        // zigzag可分解為兩個基礎步驟:豎直運動,傾斜運動
        // i表示字符串中的字符索引,其大小由內部循環(huán)控制,故使用while
        int i = 0;
        while (i < n){
            // 豎著添加
            //因為i自加,所以每次循環(huán)都要檢查i是否越界
            for (int row = 0; row < numRows && i< n; row++){
                currRow[row].append(c[i++]);
            }
            // 斜著添加
            for (int row = numRows - 2; row > 0 && i< n; row--){
                currRow[row].append(c[i++]);
            }
        }
        //轉換成一行字符
        for (int row = 1; row < numRows; row++ )
            currRow[0].append(currRow[row]);
        return currRow[0].toString();

    }
}
6.3.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末炼鞠,一起剝皮案震驚了整個濱河市胰耗,隨后出現的幾起案子岖赋,更是在濱河造成了極大的恐慌,老刑警劉巖泽篮,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異柑船,居然都是意外死亡帽撑,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門鞍时,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亏拉,“玉大人,你說我怎么就攤上這事逆巍〖疤粒” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵锐极,是天一觀的道長笙僚。 經常有香客問我,道長灵再,這世上最難降的妖魔是什么肋层? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮翎迁,結果婚禮上栋猖,老公的妹妹穿的比我還像新娘。我一直安慰自己汪榔,他們只是感情好蒲拉,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著痴腌,像睡著了一般雌团。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衷掷,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天辱姨,我揣著相機與錄音,去河邊找鬼戚嗅。 笑死,一個胖子當著我的面吹牛枢舶,可吹牛的內容都是我干的懦胞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼凉泄,長吁一口氣:“原來是場噩夢啊……” “哼躏尉!你這毒婦竟也來了?” 一聲冷哼從身側響起后众,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胀糜,失蹤者是張志新(化名)和其女友劉穎颅拦,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體教藻,經...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡距帅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了括堤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碌秸。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖悄窃,靈堂內的尸體忽然破棺而出讥电,到底是詐尸還是另有隱情,我是刑警寧澤轧抗,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布恩敌,位于F島的核電站,受9級特大地震影響横媚,放射性物質發(fā)生泄漏潮剪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一分唾、第九天 我趴在偏房一處隱蔽的房頂上張望抗碰。 院中可真熱鬧,春花似錦绽乔、人聲如沸弧蝇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽看疗。三九已至,卻和暖如春睦授,著一層夾襖步出監(jiān)牢的瞬間两芳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工去枷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留怖辆,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓删顶,卻偏偏與公主長得像竖螃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子逗余,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗特咆。 張土汪:刷leetcod...
    土汪閱讀 12,747評論 0 33
  • 對 hard 類型的題,表示目前實在是 hold 不住录粱,暫時先不刷啊腻格。等我刷完 easy 和 medium 回頭再...
    秋名山菜車手閱讀 301評論 0 0
  • 1.問題 2.題目意思 給定一個字符串画拾,使它按照Z字型排列(說起來應該是一個倒N字形吧),這個Z字形的大小由傳入的...
    做夢枯島醒閱讀 1,414評論 0 1
  • 當我寫下“鐵哥們”這三個字的時候菜职,估計他正在健身房里揮汗如雨地跑步呢青抛,這個人高馬大、長著一張包公臉的大胖子終于下定...
    所有的自律只為一朝自由閱讀 176評論 23 40
  • 真正的朋友應該是真心的希望你好些楣,并且能夠幫助你成長的人脂凶,而且這也才是最有價值的!所以不管是友誼還是婚姻愁茁,最有價值的...
    斑馬張麗娟閱讀 178評論 0 0