LeetCode(6) Z字形轉換

2021-08-24 20:44:50 字數 1119 閱讀 5784

本文**:

題目描述:

將字串"paypalishiring"以z字形排列成給定的行數:(下面這樣的形狀)

p   a   h   n

a p l s i i g

y i r

之後按逐行順序依次排列:"pahnaplsiigyir"

實現乙個將字串進行指定行數的轉換的函式:

string convert(string text, int nrows);
convert("paypalishiring", 3)應當返回"pahnaplsiigyir"

題意解釋:

比如有乙個字串 「0123456789abcdef」,轉為zigzag

當 n = 2 時:

0 2 4 6 8 a c e

1 3 5 7 9 b d f

當 n = 3 時:

0   4    8     c

1 3 5 7 9 b d f

2    6   a     e

當 n = 4 時:

0     6        c

1   5 7   b  d

2 4   8 a    e

3      9       f

我們發現,除了第一行和最後一行沒有中間形成之字型的數字外,其他都有,而首位兩行中相鄰兩個元素的index之差跟行數是相關的,為 2*nrows - 2, 根據這個特點,我們可以按順序找到所有的黑色元素在元字串的位置,將他們按順序加到新字串裡面。對於紅色元素出現的位置也是有規律的,每個紅色元素的位置為 j + 2*nrows-2 - 2*i, 其中,j為前乙個黑色元素的列數,i為當前行數。 比如當n = 4中的那個紅色5,它的位置為 1 + 2*4-2 - 2*1 = 5,為原字串的正確位置。當我們知道所有黑色元素和紅色元素位置的正確演算法,我們就可以一次性的把它們按順序都加到新的字串裡面。**如下:

class solution 

}} return result;

}};

LeetCode6Z字形轉換

將字串 paypalishiring 以z字形排列成給定的行數 下面這樣的形狀 p a h n a p l s i i g y i r之後按逐行順序依次排列 pahnaplsiigyir 實現乙個將字串進行指定行數的轉換的函式 string convert string text,int nrows...

LeetCode(6) Z字形轉換

medium!題目描述 將字串 paypalishiring 以z字形排列成給定的行數 下面這樣的形狀 p a h n a p l s i i g y i r之後按逐行順序依次排列 pahnaplsiigyir 實現乙個將字串進行指定行數的轉換的函式 string convert string te...

LeetCode 6 Z字形變換

將字串 paypalishiring 以z字形排列成給定的行數 p a h n a p l s i i g y i r之後從左往右,逐行讀取字元 pahnaplsiigyir 實現乙個將字串進行指定行數變換的函式 string convert string s,int numrows 輸入 s pa...