6. Z 字形變換

這道題感覺沒啥技術(shù)含量,只要你找到它的規(guī)律就可以做出來
我先將整個圖形分成一組一組的小圖形,我圈出來的算一組



如果一個Z的numRows是n尼夺,那么一組的size就是 2 * n - 2

我把整個Z字形分成三層


  • 上面為第一層,在添加到新字符串中很容易,第一層的元素在字符串中的索引是
    s[j * size], j 是 該元素是屬于第幾組(從0開始)屏箍,size則是一組的大小

  • 中間若干層绘梦,可以看成是一對一對的元素, 設(shè)當(dāng)前層高為i,也就是從上往下數(shù)第i行(從0開始),要添加到新字符串中的字符為 s[i + j * size] 和 s[size - i + j * size]赴魁,后面的j * size 表示他是第幾組的

  • 最后一層和第一類類似卸奉,可以很快得出加入新字符串的字符為s[numRows - 1 + j * size]

class Solution
{
public:
    string convert(string s, int numRows)
    {
        // numRows 等于1特殊情況,直接返回原數(shù)組
        if (numRows == 1)
            return s;
        // 每個分組的大小
        int size = 2 * numRows - 2;
        // 字符串長度
        int length = s.size();
        // 一共有幾個分組颖御,向上取整
        int n = ceil(double(s.size()) / double((2 * numRows - 2)));
        string s1;
        
        // 加入第1行
        int j = 0;
        while (j < n && j * size < length)
        {
            s1 += s[0 + j * size];
            j++;
        }

        // 加入第 2 -  numRows - 1 行
        for (int i = 1; i < numRows - 1; i++)
        {
            int j = 0;
            
            // 因為我們在求組數(shù)時榄棵,是向上取整,所以不能保證最后一組是完整的潘拱,但是可以保證前 n - 1組是完整的
            while (j < n - 1)
            {
                s1 += s[i + j * size];
                s1 += s[size - i + j * size];
                j++;
            }
            // 單獨考慮最后一組的索引是否越界
            if (j == n - 1)
            {
                if (i + j * size < length)
                    s1 += s[i + j * size];
                if (size - i + j * size < length)
                    s1 += s[size - i + j * size];
            }
        }
        
        // 加入第numRows 行
        j = 0;
        while (j < n && numRows - 1 + j * size < length)
        {
            s1 += s[numRows - 1 + j * size];
            j++;
        }
        return s1;
    }
};

最后疹鳄,雖然這題沒技術(shù)含量,但是兩次提交就過了好開心芦岂,第一次只是沒有考慮 numRows = 1的特殊情況

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瘪弓,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子禽最,更是在濱河造成了極大的恐慌腺怯,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件川无,死亡現(xiàn)場離奇詭異呛占,居然都是意外死亡,警方通過查閱死者的電腦和手機懦趋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門晾虑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仅叫,你說我怎么就攤上這事帜篇。” “怎么了惑芭?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵坠狡,是天一觀的道長。 經(jīng)常有香客問我遂跟,道長逃沿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任幻锁,我火速辦了婚禮凯亮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哄尔。我一直安慰自己假消,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布岭接。 她就那樣靜靜地躺著富拗,像睡著了一般臼予。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上啃沪,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天粘拾,我揣著相機與錄音,去河邊找鬼创千。 笑死缰雇,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的追驴。 我是一名探鬼主播械哟,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼殿雪!你這毒婦竟也來了暇咆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤冠摄,失蹤者是張志新(化名)和其女友劉穎糯崎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體河泳,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年年栓,在試婚紗的時候發(fā)現(xiàn)自己被綠了拆挥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡某抓,死狀恐怖纸兔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情否副,我是刑警寧澤汉矿,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站备禀,受9級特大地震影響洲拇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜曲尸,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一赋续、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧另患,春花似錦纽乱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽租冠。三九已至,卻和暖如春薯嗤,著一層夾襖步出監(jiān)牢的瞬間顽爹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工应民, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留话原,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓诲锹,卻偏偏與公主長得像繁仁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子归园,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

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

  • 6. Z 字形變換 題目 將一個給定字符串根據(jù)給定的行數(shù)黄虱,以從上往下、從左到右進行 Z 字形排列庸诱。比如輸入字符串為...
    索毅閱讀 227評論 0 0
  • 題目 來源:力扣(LeetCode)鏈接:https://leetcode-cn.com/problems/zig...
    小院閑窗春已深閱讀 300評論 0 0
  • 題意 將一個給定字符串 s 根據(jù)給定的行數(shù) numRows 捻浦,以從上往下、從左到右進行 Z 字形排列桥爽。 比如輸入字...
    ST_碼閱讀 119評論 0 0
  • 將一個給定字符串 s 根據(jù)給定的行數(shù) numRows 朱灿,以從上往下、從左到右進行 Z 字形排列钠四。比如輸入字符串為 ...
    簡_愛SimpleLove閱讀 273評論 0 1
  • 題目描述: 將一個給定字符串根據(jù)給定的行數(shù)盗扒,以從上往下、從左到右進行 Z 字形排列缀去。比如輸入字符串為 "LEETC...
    LeeYunFeng閱讀 945評論 0 50