06 Z字形變換

2021-10-02 08:14:31 字數 765 閱讀 5829

題目好像開始越來越難了,這道題一開始毫無頭緒,只知道了每一行用乙個slice,然後依次把字元放進slice中,然後突然發現好像可以找規律,如果分成n行,那麼每乙個迴圈都是2n-2個元素,這道題最重要的就是要知道字元應該放在哪個slice裡面。假如要分成4行,那麼一次包括(tmp = 2*4-2) = 6個元素,而numrows為4,遍歷字串從i為0知道len(s),如果 i小於4時說明是從上到下的就不用做操作直接放進對應的slice中,當i>=4時就是斜著的字元,這裡要通過計算算出對應的slice,我自己推導出的公式是下面這樣的,首先要把i對numrows求模回到第乙個迴圈中(因為後面的都是和第乙個迴圈一樣的模子) j = (i-1)%numrows+1 ,這裡有個錯誤浪費了我半天時間才找出來,我第一次寫的j = i-1%numrows+1 ,忘記加括號導致結果是錯誤的。假如j>=numrows就是斜著的,然後通過下面的公式求出對應的slice:

j = numrows - ((j+1)%numrows + 1)
接下來就不用多說了,把對應字元放入對應slice就行。

**如下:

看了下題解,把我給驚呆了,獻上題解,,雖然時間和我第乙個方法一樣是12ms,不過理解起來完全不複雜,不費腦,不用找規律,,我佛了。。**如下:

06 Z 字形變換

這道題目在解題時關鍵是要弄清楚 z字形排列 是怎麼一回事,僅僅根據numrow為3的情況可能看的不會 太明顯,把行數為4和行數為3的情況,做乙個對比,更容易找到解題思路。1 當不考慮對角線上的元素時,完成可以看成是數字是一列一列的跳轉,且跳轉距離為numrow 2 2 2 再去考慮計算對角線的元素的...

06Z字形變換

參考文獻 將乙個給定字串根據給定的行數,以從上往下 從左到右進行 z 字形排列。example 輸入字串為 leetcodeishiring 行數為 3 時,排列如下 return l c i r e t o e s i i g e d h n 按行排序 通過從左向右迭代字串,我們可以輕鬆地確定字元...

leecode刷題學習 06 Z字形變換

解讀本題第一想法肯定是遍歷陣列,但是如何控制陣列向下走和向前走是問題所在關鍵。這裡我們將每一行看作乙個rows i rows 是乙個字串陣列 圖中為例項答案,是乙個rows 4 的陣列,rows 0 ldr,rows 1 eoeii,根據上圖,我們已得知解題思路,但是難以控制的是空格字元如何判斷。這...