LeetCode 6 Z 字形變換

2021-10-05 21:18:10 字數 1421 閱讀 5180

思路:

找出z字的規律。以每乙個z字的「 | 」 和" / " 作為一組,進行分組,每組有  2 * numrows - 2 個字元。

例:「leetcodeishiring"行數為 3

l   c   i   r            l              c

e t o e s i i g 以 e t 為一組, o e 為一組。

e d h n e d

" | " 的部分大小為 numrows,「 / 」的部分大小為 2 * numrows - 2 - numrows  = numrows - 2;

「 / 」 部分的初始間隔為 2 * numrows - 2 - 2,此後需要更新。

" | " 部分的順序在原始字串中為從前到後,「 / "部分的順序在原始字串中為從後到前

例如:「leetcodeishiring"行數為 4

對於中間部分,先是 o i  再是 c h。

首行和最後一行不需要加中間部分,直接新增即可,中間部分從後往前遍歷,其他部分從前往後遍歷。

詳細處理步驟,請看**。

public string convert(string s, int numrows) 

stringbuilder sb = new stringbuilder();

int index = 0;

int jump = numrows * 2 - 2;

int len = s.length();

int mid = numrows - 2; // 中間部分的字元數

int midjump = jump - 2; // 中間部分的跳轉數

for (int i = 0; i < numrows; i++)

} else

}midjump -= 2; // 中間位置每次都是逆序新增,

// 故一次新增後,需要減2

// (由於index會加1,中間位置需要減1,裡外裡減2)

mid--; // 中間部分還剩幾個字元}}

return sb.tostring();

}

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...

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 示例 1 輸入...

LeetCode 6 Z字形變換

把整個問題拆解為 儲存 取 的兩個過程 通過觀察我發現的是,當numrows為3時,兩列之間的數字的數目為1 當numrows為4時,兩列之間的數字的數目為2,以此類推。那麼,可不可以將每一列都存起來 col 兩列之間的數字也存起來 gap 最後要輸出時再通過遍歷的方式拼接出結果呢?以題目中給的字串...