Z字形轉換

2021-08-30 15:16:20 字數 1199 閱讀 4018

將字串"paypalishiring"以z字形排列成給定的行數:

p   a   h   n

a p l s i i g

y i r

之後從左往右,逐行讀取字元:"pahnaplsiigyir"實現乙個將字串進行指定行數變換的函式:

string convert(string s, int numrows);
給乙個字串長點的,numrows為5,我們來看看規律字串:"0123456789abcdefgh",其分布為

0        8          g 

1     7 9      f  h 

2   6   a   e

3 5     b d

4        c 

轉化結果是:08g179fh26aei35bd44cc

等差數列的通項公式

從第0,4行來看,滿足等差數列,差值d=8,所以0->8->g,4->c

從第1,2,3行來看,在滿列的情況下,1->9->h,2->a,3->b同樣滿足等差數列

所以需要考慮在不是首行也不是最後一行的情況下,在滿足等差數列的兩個值之間都多了乙個值,這個值又滿足怎麼樣的一種規律呢

在第1行,1和9之間多了個7,9和h之間多了個f(h的值是17,g的值是15)

在第2行,2和a之間多了個6,

在第3行,3和b之間多了個5,

仔細看一下,其中是有規律的,兩個列依舊差值是d=8,可以看出滿足j+d-2*i;(其中j是當前列的前乙個值,比如7時,j=1,f時,j=9,因為我們是以等差數列的行數來迴圈的;i是當前的行數)

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace solution

static string convert(string s, int numrows)}}

return sb.tostring();}}

}

6 Z字形轉換

將乙個給定字串根據給定的行數,以從上往下 從左到右進行 z 字形排列。比如輸入字串為 leetcodeishiring 行數為 3 時,排列如下 之後,你的輸出需要從左往右逐行讀取,產生出乙個新的字串,比如 lciretoesiigedhn 請你實現這個將字串進行指定行數變換的函式 string c...

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字形轉換

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