6.ZigZag Conversion(ZigZag转换)

字符串“PAYPALISHIRING”以给定行数的锯齿形图案写成:(您可能希望以固定字体显示此模式以获得更好的可读性)

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

然后逐行阅读:“PAHNAPLSIIGYIR”
编写将采用字符串的代码,并将此转换指定为多行:

string convert(string text, int nRows);

convert("PAYPALISHIRING", 3) 应该返回 "PAHNAPLSIIGYIR".


找规律:两列看做一个组,这样子就行了

class Solution {
public:
    string convert(string s, int numRows) {
        int len = s.length();
        int col = numRows * 2 - 2;
        int row;
        string temp;
        if (numRows == 1){
            return s;
        }
        if (len %numRows == 0)
            row = len / numRows;
        else
            row = len / numRows + 1;
        //计算
        for (int j = 0; j < numRows; ++j)
        {
            for (int i = 0; i < row; ++i)
            {
                if ((i*col + j) < len)
                {
                    cout << s[i* col + j];
                    temp += s[i* col + j];
                }
                if ((j != 0) && (j != col - j) && (i*col + col - j> s>>row){
        s=sol.convert(s,row);
        cout <<"string: "<

【推荐代码】

class Solution {
public:
    string convert(string s, int numRows) {
        if(numRows==1) return s;
        string rel="";
        int l=s.length();
        int add=2*numRows-2;
        for(int i=0;i

你可能感兴趣的:(6.ZigZag Conversion(ZigZag转换))