ZigZag Conversion

来源:互联网 发布:集换式卡牌手游 知乎 编辑:程序博客网 时间:2024/06/16 09:15
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   NA P L S I I GY   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".

 

class Solution {public:    string convert(string s, int nRows) {        string new_s;                if(nRows == 1)        {            return s;        }                for(int i = 0; i < s.size(); i += 2 * (nRows - 1))  //第1行        {            new_s += s[i];        }                for(int i = 1; i < nRows - 1; i++)        {            for(int j = i; j < s.size(); j += 2 * (nRows - 1))            {                new_s += s[j];                if(j + 2 * (nRows - 1 - i) < s.size())                {                    new_s += s[j + 2 * (nRows - 1 - i)];                }            }        }                for(int i = nRows - 1; i < s.size(); i += 2 * (nRows - 1))  //最后1行        {            new_s += s[i];        }                return new_s;    }};


 

0 0
原创粉丝点击