当前位置:编程学习 > C/C++ >>

Leetcode: ZigZag Conversion

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)
 
P   A   H   N
A P L S I I G
Y   I   R
And then read line by line: "PAHNAPLSIIGYIR"
Write the code that will take a string and make this conversion given a number of rows:
 
string convert(string text, int nRows);
convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".
 
 
string convert(string s, int nRows) {  
        // Start typing your C/C++ solution below  
        // DO NOT write int main() function      
        if(s == "")return s;  
        vector<vector<char>> matrix;  
        for(int i = 0; i< nRows; ++i)  
        {  
            vector<char> tmp;  
            matrix.push_back(tmp);  
        }  
        int length = s.length();  
        int i = 0;  
        while(i <length)  
        {  
            for(int m = 0; m < nRows && i <length; ++m,++i)  
                matrix[m].push_back(s[i]);  
            for(int n = nRows-2; n > 0 && i <length; --n,++i)  
                matrix[n].push_back(s[i]);  
        }  
        string res = "";  
        for(int i = 0; i < nRows; ++i)  
            for(int j = 0; j < matrix[i].size(); ++j)  
                res += matrix[i][j];  
        return res;  
    }  

 


补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,