no.6z字形變換
原題:
將字串"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除了第一行和最後一行沒有中間形成之字型的數字外,其他都有,而首位兩行中相鄰兩個元素的index之差跟行數是相關的,為 2*nrows - 2, 根據這個特點,我們可以按順序找到所有的黑色元素在元字串的位置,將他們按順序加到新字串裡面。對於紅色元素出現的位置也是有規律的,每個紅色元素的位置為 j + 2*nrows-2 - 2*i, 其中,j為前乙個黑色元素的列數,i為當前行數。 比如當n = 4中的那個紅色5,它的位置為 1 + 2*4-2 - 2*1 = 5,為原字串的正確位置。當我們知道所有黑色元素和紅色元素位置的正確演算法,我們就可以一次性的把它們按順序都加到新的字串裡面。a l s i g
y a h r
p i
def convert(self, s, numrows):【推薦閱讀】str_length = len(s)
# 兩列之間的差
node_length = 2 * numrows - 2
result = ""
if str_length == 0 or numrows == 0
\ or numrows == 1:
return s
# 從第一行遍歷到最後一行
for i in range(numrows):
for j in range(i, str_length, node_length):
# 第一行和最後一行
還有普通行的整列數字
result += s[j]
if i != 0 and i != numrows - 1 and \
j - 2 * i + node_length < str_length:
# 單列行的數字
result += s[j - 2 * i + node_length]
return result
python物件導向之封裝(04)
從0開始如何用乙個月殺進機器學習比賽top25%
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 示例...
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...