LeetCode Day5 Zigzag_Conversion

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

猜你喜欢

转载自blog.csdn.net/weixin_41394379/article/details/82950203