谁能给我解释一下leetcode ZigZag的问题?
问题[Link]
字符串"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我不是在找任何人来解决这个问题。请帮助我理解这个问题。
发布于 2021-06-02 00:03:38
def convert(self, s: str, numRows: int) -> str:
#
if numRows <2 or len(s)<numRows: return s
n = numRows-1
step = n*2
res = s[::step]
for i in range(1,n):
for v,w in itertools.zip_longest(s[i::step],s[step-i::step],fillvalue=''):
res += v+w
return res + s[n::step]或者不使用lib。(类似的想法)
def convert(self, s, numRows):
step = (numRows == 1) - 1 # 0 or -1
rows, idx = [''] * numRows, 0
for c in s:
rows[idx] += c
if idx == 0 or idx == numRows-1:
step = -step #change direction
idx += step
return ''.join(rows)https://stackoverflow.com/questions/61969542
复制相似问题