LeetCode6-ZigZag Conversion(C++)

Description

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

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

And then read line by line: "PAHNAPLSIIGYIR"

Write the code that will take a string and make this conversion given a number of rows:

string convert(string s, int numRows);
Example 1:

Input: s = "PAYPALISHIRING", numRows = 3
Output: "PAHNAPLSIIGYIR"
Example 2:

Input: s = "PAYPALISHIRING", numRows = 4
Output: "PINALSIGYAHRPI"
Explanation:

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

AC代碼

class Solution {
public:
    string convert(string s, int numRows) {
        if(numRows <= 1) {
            return s;
        }

        vector<string> pattern(numRows, "");
        string res = "";
        // down is a flag which determine the direction
        int down = 0;
        // row stands for which row it is now
        int row = 0;
        for(int i=0; i<s.size(); i++) {
            pattern[row].push_back(s[i]);
            if(row == 0) {
                down = 1;  // Move downside
            } else if(row == numRows - 1) {
                down = -1;  // Move upside
            }
            row += down;
        }

        for(int i=0; i<numRows; i++) {
            res += pattern[i];
        }

        return res;
    }
};

測試代碼

int main() {
    Solution s;

    string s1 = "PAYPALISHIRING";
    string res_s1 = s.convert(s1, 3);
    cout << res_s1 << endl;

    string s2 = "PAYPALISHIRING";
    string res_s2 = s.convert(s2, 4);
    cout << res_s2 << endl;
}

總結

使用犧牲空間復雜度的方式換取時間復雜度磷蜀,創(chuàng)建一個vector藕届,來存儲每一行的字符串贮竟。設置一個flag,決定index移動的方向左权。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末拘领,一起剝皮案震驚了整個濱河市蝉稳,隨后出現的幾起案子抒蚜,更是在濱河造成了極大的恐慌,老刑警劉巖耘戚,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗡髓,死亡現場離奇詭異,居然都是意外死亡收津,警方通過查閱死者的電腦和手機饿这,發(fā)現死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門浊伙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人长捧,你說我怎么就攤上這事嚣鄙。” “怎么了串结?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵哑子,是天一觀的道長。 經常有香客問我肌割,道長卧蜓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任把敞,我火速辦了婚禮弥奸,結果婚禮上,老公的妹妹穿的比我還像新娘奋早。我一直安慰自己盛霎,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布耽装。 她就那樣靜靜地躺著愤炸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掉奄。 梳的紋絲不亂的頭發(fā)上摇幻,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音挥萌,去河邊找鬼。 笑死枉侧,一個胖子當著我的面吹牛引瀑,可吹牛的內容都是我干的。 我是一名探鬼主播榨馁,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼憨栽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了翼虫?” 一聲冷哼從身側響起屑柔,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎珍剑,沒想到半個月后掸宛,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡招拙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年唧瘾,在試婚紗的時候發(fā)現自己被綠了措译。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡饰序,死狀恐怖领虹,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情求豫,我是刑警寧澤塌衰,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站蝠嘉,受9級特大地震影響最疆,放射性物質發(fā)生泄漏。R本人自食惡果不足惜是晨,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一肚菠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧罩缴,春花似錦蚊逢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至檬寂,卻和暖如春终抽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桶至。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工昼伴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人镣屹。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓圃郊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親女蜈。 傳聞我的和親對象是個殘疾皇子持舆,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內容

  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,446評論 0 13
  • 函數調用 Built-in Functions abs(x) Return the absolute value ...
    叫我七夜閱讀 1,161評論 0 0
  • NAME dnsmasq - A lightweight DHCP and caching DNS server....
    ximitc閱讀 2,810評論 0 0
  • 和朋友聊起清明去哪過,一開始說好的去南昌找小伙伴伪窖,后來又突然改了口叫我五一陪她去南昌逸寓。我把我那個時候的想法和她說了...
    漸嫌閱讀 554評論 1 2
  • rem適配 放頭部, 文字基準:font-size:75px rem并不適合用到段落文本上覆山。所以在Flexible...
    ccc往事隨風閱讀 167評論 0 0