一、題目
將字串"paypalishiring"
以z字形排列成給定的行數:
p a h n之後從左往右,逐行讀取字元:a p l s i i g
y i r
"pahnaplsiigyir"
實現乙個將字串進行指定行數變換的函式:
string convert(string s, int numrows);示例 1:
輸入:s = "paypalishiring", numrows = 3輸出:"pahnaplsiigyir"示例 2:
輸入:s = "paypalishiring", numrows = 4輸出:"pinalsigyahrpi"解釋:p i n二、思路a l s i g
y a h r
p i
要得到解釋後的二維數constr[numrows][len]; len未知的情況下,找規律
len = s.length()/ (2*numrows - 2) * (numrows - 1);
解釋一下將乙個有完整列的如:payp這一列到ishi這一列,有 numrows - 2個字元,加上完整的一列則為 2*numrows -2個字元 而這種規律遞進的行長為 numrows - 1, 當然 len != s.length() / 2; 計算機運算取整!!
當然還有不規律的,如最後的ng這一列,其判讀 otherstr = s.length()% (2*numrows - 2)
判斷他的列數進行相加得到最後的len 那麼接下來就填充再取出就好了
三、**
public class leetcode6
public static string convert(string s, int numrows)
len = len + otherlen;
char constr = new char [numrows][len];
int k = 0 , l ,i = 0,j = 0;
while(k < s.length())
//像右推進一列,行數回歸到非完整的起始行
j++; i = numrows - 2;
//填充非完整的列
for(int z = numrows - 2;z > 0;z--)}}
stringbuilder changedstr = new stringbuilder() ;
for( i = 0 ; i < numrows ; i++)}}
return new string(changedstr);
}}
四、總結 6 Z字形變換
將字串 paypalishiring 以z字形排列成給定的行數 p a h n a p l s i i g y i r 之後從左往右,逐行讀取字元 pahnaplsiigyir 示例1 輸入 s paypalishiring numrows 3 輸出 pahnaplsiigyir 示例 2 輸入 s...
6 Z 字形變換
將乙個給定字串根據給定的行數,以從上往下 從左到右進行 z 字形排列。比如輸入字串為 leetcodeishiring 行數為 3 時,排列如下 l c i r e t o e s i i g e d h n之後,你的輸出需要從左往右逐行讀取,產生出乙個新的字串,比如 lciretoesiigedh...
6 Z 字形變換
將乙個給定字串根據給定的行數,以從上往下 從左到右進行 z 字形排列。比如輸入字串為 leetcodeishiring 行數為 3 時,排列如下 l c i r e t o e s i i g e d h n 之後,你的輸出需要從左往右逐行讀取,產生出乙個新的字串,比如 lciretoesiiged...