The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)
P A H N A P L S I I G Y I R
And then read line by line: "PAHNAPLSIIGYIR"
Write the code that will take a string and make this conversion given a number of rows:
string convert(string s, int numRows);
Example 1
1 2
Input: s = "PAYPALISHIRING", numRows = 3 Output: "PAHNAPLSIIGYIR"
Example 2
1 2 3 4 5 6 7 8
Input: s = "PAYPALISHIRING", numRows = 4 Output: "PINALSIGYAHRPI" Explanation:
class : defconvert(self, s, numRows): """ :type s: str :type numRows: int :rtype: str """ row_values = [""]*numRows s_length = len(s) if numRows == 1: print("".join(row_values)) return s for index, value in enumerate(row_values): length = index mark = 1 while length < s_length: if index != 0and index != (numRows-1): row_values[index] += s[length] if mark == 1 : length += (numRows - index-1)*2 elif mark == 2: length += (index)*2 mark = 2/mark else: row_values[index] += s[length] length += (numRows-1)*2 print("".join(row_values)) return"".join(row_values)
近期评论