zigzag

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)

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"

方法1:遍歷每次首行和最后一行改變方向(所為方向就是行++和行--)

class Solution {
public:
    string convert(string s, int numRows) {
        
        if (1 >= numRows) {
            return s;
        }        
        
        int length = s.length();
        int curRow = 0;
        int direct = 1;
        
        string out[numRows];
        
        for(int i = 0; i < length; i++) {   
            out[curRow] += s[i];
            
            if(0 == curRow) {
                direct = 1;
            }
            
            if(numRows - 1 == curRow ) {
                direct = -1;
            }
            curRow += direct;
        }
    
        string result = "";  
        for(int i = 0; i < numRows; i++){  
            result += out[i];  
        }  
        return result; 
    }
};

方法2:分組滨溉,每組行數(shù)*2-2個泼诱,首行和末行各一聋庵,其余各行各2,秩序計(jì)算一下通用公式即可醒第;

class Solution {
public:
    string convert(string s, int numRows) {
        
        if (1 >= numRows) {
            return s;
        }        
        string out = "";
        
        int length = s.length();
        int temp = 2 * numRows -2;
       
        for(int i = 0; i < numRows; i++) {   
            int curTemp = 0;
            while(curTemp * temp + i < length) {
                out += s[curTemp * temp + i];
                if(0!=i && numRows-1!=i && (curTemp+1)*temp-i<length) {
                    out += s[(curTemp+1)*temp-i];
                }
                curTemp++;
            }
        }
  
        return out; 
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末豹缀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子樱报,更是在濱河造成了極大的恐慌蝙昙,老刑警劉巖闪萄,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奇颠,居然都是意外死亡败去,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門烈拒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來圆裕,“玉大人,你說我怎么就攤上這事荆几∠抛保” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵吨铸,是天一觀的道長耿战。 經(jīng)常有香客問我,道長焊傅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任狈涮,我火速辦了婚禮狐胎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘歌馍。我一直安慰自己握巢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布松却。 她就那樣靜靜地躺著暴浦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪晓锻。 梳的紋絲不亂的頭發(fā)上歌焦,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機(jī)與錄音砚哆,去河邊找鬼独撇。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纷铣。 我是一名探鬼主播卵史,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼搜立!你這毒婦竟也來了以躯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤啄踊,失蹤者是張志新(化名)和其女友劉穎忧设,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體社痛,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡见转,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蒜哀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斩箫。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖撵儿,靈堂內(nèi)的尸體忽然破棺而出乘客,到底是詐尸還是另有隱情,我是刑警寧澤淀歇,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布易核,位于F島的核電站,受9級特大地震影響浪默,放射性物質(zhì)發(fā)生泄漏牡直。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一纳决、第九天 我趴在偏房一處隱蔽的房頂上張望碰逸。 院中可真熱鬧,春花似錦阔加、人聲如沸饵史。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胳喷。三九已至,卻和暖如春夭织,著一層夾襖步出監(jiān)牢的瞬間吭露,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工尊惰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奴饮,地道東北人纬向。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像戴卜,于是被迫代替她去往敵國和親逾条。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

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

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,306評論 0 10
  • 6. ZigZag Conversion Total Accepted: 97722Total Submissio...
    wkhuahuo閱讀 500評論 0 0
  • LeetCode -- 6. ZigZag Conversion 題目描述 The string "PAYPALI...
    sea_baby閱讀 466評論 0 0
  • 每日算法——letcode系列 問題 ZigZag Conversion Difficulty: Easy The...
    CarlBlack閱讀 1,019評論 0 0
  • 在翻著手機(jī)嗎投剥,在想著未來嗎 戀人在何方师脂,理想是什么 翻來覆去,思前想后 逃避著江锨,喘息著 顧慮吃警,在乎 疼,默
    阿止止兒閱讀 266評論 0 0