[LeetCode] 6. ZigZag Conversion

陪她去流浪 桃子 2014年11月01日 编辑 阅读次数:1961

题目

ZigZag Conversion | LeetCode OJ

描述

把给定的字符串按照指定行数的 Z 字形图案写出来,然后返回其按水平行读取的结果字符串。

举例

若给定字符串 PAYPALISHIRING,行数为 3,那么,它对应的 Z 字形图案应该是:

P   A   H   N
A P L S I I G
Y   I   R

,那么,函数应该返回字符串:PAHNAPLSIIGYIR

思路

(暂无)

代码

class Solution {
public:
    string convert(string s, int nRows) {
        int n = s.size();
        if(n==0) return string();
        if(nRows<=0) return string();
        if(nRows==1) return s;
        
        string str;
        for(int i=0; i<nRows; i++){
            if(i==0 || i==nRows-1){
                int index = i;
                while(index < n){ 
                    str += s[index];
                    index += nRows*2-2;
                }
            }
            else{
                int index = i;
                while(index < n){
                    str += s[index];
                    int next = index + (nRows*2-2) - i*2;
                    if(next < n)
                        str += s[next];
                    index += nRows*2-2;
                }
            }
        }
        return str;
    }
};

标签:LeetCode