将字符串 "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
示例代码:
方法一:
#!/usr/bin/python3
import math
def convert(s, numRows):
stringBuf =['']*numRows
length = len(s)
i = 0
while i<length:
for idx in range(0,numRows):
if i < length:
stringBuf[idx] += s[i]
i=i+1
for idx in range(numRows-2,0,-1):
if idx>=1 and i <length:
stringBuf[idx] += s[i]
i=i+1
result = ""
for x in stringBuf:
result+=x
return result
print("input the string:")
str = input()
print("input the num of row:")
num = int(input())
print(convert(str,num))
方法二:
#!/usr/bin/python3
import math
def convert(s, numRows):
if numRows == 1 or numRows >= len(s):
return s
L =['']*numRows
index,step = 0,1
for x in s:
L[index] += x
if index == 0:
step = 1
elif index == numRows - 1:
step = -1
index += step
return ''.join(L)
print("input the string:")
str = input()
print("input the num of row:")
num = int(input())
print(convert(str,num))