The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this:
P A H N
A P L S I I G
Y I R
And then read line by line: "PAHNAPLSIIGYIR"
주어진 문자열에 대해 위와 같이 지그재그로 나열해 새로 읽은 문자열로 변환해 리턴하시오.
Input: s = "PAYPALISHIRING", numRows = 3
Output: "PAHNAPLSIIGYIR"
Input: s = "PAYPALISHIRING", numRows = 4
Output: "PINALSIGYAHRPI"
Explanation:
P I N
A L S I G
Y A H R
P I
각각의 row에 대해 포함 여부를 index로 계산해 채워 나간다.
class Solution:
def convert(self, s: str, numRows: int) -> str:
if numRows == 1: return s
group = (numRows-1)*2
ans = ''
for j in range(0, numRows):
for i, v in enumerate(s):
if i % group == j or i % group == group - j:
ans += v
return ans