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".

class Solution {
public:
    string convert(string s, int nRows) 
    {
        string* str=new string[nRows];
        int index=0;
        while(index<s.length())
        {
            for(int j=0;j<nRows && index<s.length();j++)
                str[j]+=s[index++];
            for(int j=nRows-2;j>0 && index<s.length();j--)
                str[j]+=s[index++];
        }
        string result;
        if(nRows>s.length()) nRows=s.length();
        for(int i=0;i<nRows;i++)
            result=result+str[i];
        return result;
    }
}; 
posted @ 2014-05-29 15:07  erictanghu  阅读(100)  评论(0编辑  收藏  举报