將字串"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...