[leetcode] ZigZag Conversion

ZigZag Conversion

第0行和nRows-1行,公式为idx+=2*(nRows-1);

第1行~nRows-2行,公式分奇偶列分别为:奇数idx+=2*(nRows-1-i);偶数idx+=2*i;

class Solution {
public:
    string convert(string s, int nRows) {
        if(s.length()==0||nRows<=1){
            return s;
        }
        
        string res="";
        int len=s.length();
        
        for(int i=0;i<nRows&&i<len;i++){//attention:i<len
            int idx=i;
            res+=s[idx];
            
            for(int j=1;idx<len;j++){
                //first line or the last line
                if(i==0||i==nRows-1){
                    idx+=2*(nRows-1);
                }else{//middle line
                    if(j&0x1){//odd column
                        idx+=2*(nRows-1-i);
                    }else{//even column
                        idx+=2*i;
                    }
                }
                if(idx<len){
                    res+=s[idx];
                }
            }
        }
        return res;
    }
};



你可能感兴趣的:([leetcode] ZigZag Conversion)