摘要:題目題目解釋假設(shè)我們輸入的就是上面的字符串在取不同值的時候大家看我用做的簡易的圖看完圖應(yīng)該就明白了這個題目到底是什么意思這個題的難點在于找規(guī)律只要找到了規(guī)律解決這個題并不難規(guī)律如下第一行或者最后一行元素之間的間隔為中間部分間隔分別是依
題目
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 text, int nRows);
convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".
假設(shè)我們輸入的就是上面的字符串,在numRows取不同值的時候,大家看我用Excel做的簡易的圖:
看完圖應(yīng)該就明白了這個題目到底是什么意思,這個題的難點在于找規(guī)律,只要找到了規(guī)律,解決這個題并不難.
規(guī)律如下:
第一行或者最后一行,元素之間的間隔(distance)為
2 * nRows - 2;
中間部分間隔分別是:
distace - 2i, 2 i, distance - 2i, 2i...
依照上面規(guī)律,代碼如下
/** * @param {string} s * @param {number} numRows * @return {string} */ var convert = function(s, numRows) { if (numRows <= 1) return s; let res = ""; let len = s.length; let dis = numRows*2 - 2; /* first row */ for (let i = 0; i < len; i+=dis) { res += s.charAt(i); } /* middle */ for (let i = 1; i < numRows-1; i++) { let tempDis = 2*i; for (let j = i; j < len; j += tempDis) { res += s.charAt(j); tempDis = dis - tempDis; } } /* last row */ for (let i = numRows-1; i< len; i += dis) { res += s.charAt(i); } return res; };
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/89596.html
摘要:很奇葩的題目,先將轉(zhuǎn)化為字符數(shù)組,便于操作。再看要求轉(zhuǎn)化為多少行,就建立多大的數(shù)組。 Problem 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 ...
摘要:要求我們在之字形重新排列這個字符串后,再按正常的從上到下,從左至右的順序輸出拼接好的字符串。因此對于每一個字符,我們判斷它應(yīng)該在哪一行,然后將它加到它所在行的字符序列的尾部。最后我們合并每一行,獲得最后的結(jié)果。 題目詳情 The string PAYPALISHIRING is written in a zigzag pattern on a given number of rows ...
摘要:題目解題方法以這樣的方式畫出更方便看出它的規(guī)律。當?shù)臅r候,第一行和最后一行每次都是可以設(shè)一個再來看,中間的行數(shù)除了第一行和最后一行,跳的規(guī)律發(fā)生變化,其實每次還是存在,只不過中間多了一些。 題目:ZigZag Conversion showImg(/img/bVz1DU); 解題方法: showImg(/img/bVz1Eb); 以這樣的方式畫出String更方便看出它的規(guī)律。 1 當...
摘要:給一個要求按豎字方法去排列再橫向讀出,給定行數(shù)。若則程序輸出應(yīng)為若程序輸出應(yīng)為分析找規(guī)律,將每行當作一個研究對象,找出每個字母在原字符串中的代數(shù)規(guī)律。若文章中有錯誤或者各路大神有更好解法,歡迎評論。 給一個String: PAYPALISHIRING 要求按豎Z字方法去排列再橫向讀出,給定行數(shù)R。 若 R = 3: P A H N A P L S I I G Y I ...
摘要:看到這道題總覺得眼熟,做完之后恍然大悟,這不就是小學數(shù)學做的找規(guī)律一題目字形變換將一個給定字符串根據(jù)給定的行數(shù),以從上往下從左到右進行字形排列。一當然是因為最近實在太忙了捂臉,幾乎周周誰遭得住。 看到這道題總覺得眼熟,做完之后恍然大悟,這不就是小學數(shù)學做的找規(guī)律 一、題目 Z 字形變換: 將一個給定字符串根據(jù)給定的行數(shù),以從上往下、從左到右進行 Z 字形排列。比如輸入字符串為 LEET...
閱讀 1875·2021-09-27 13:35
閱讀 3429·2019-08-30 14:16
閱讀 2483·2019-08-30 10:52
閱讀 859·2019-08-29 16:35
閱讀 1416·2019-08-29 15:22
閱讀 3641·2019-08-23 18:21
閱讀 3133·2019-08-23 18:00
閱讀 3123·2019-08-23 16:50