C++:
class Solution {
public:
string convert(string s, int numRows) {
string tmp;
int dis=2*numRows-2;
if(!dis) dis=1;
for(int i=0;i<numRows;i++){
for(int j=i;j<s.size();j+=dis){
tmp.append(1,s[j]);
if((dis-i*2) != 0 && (dis-i*2) != dis && (j+dis-i*2)<s.size())
tmp.append(1,s[j+dis-i*2]);
}
}
return tmp;
}
};
python:
利用二维数组直接存储
class Solution:
def convert(self, s, numRows):
if numRows==1:return s
tmp=[[]for i in range(numRows)]
direct,r=1,0
for c in s:
tmp[r]+=c
if r==numRows-1: #折回向上
direct=-1
elif r==0: #折回向下
direct=1
r+=direct
answer = ""
for row in tmp: #按行输出
for col in row:
answer += col
return answer