码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode[6]ZigZag Conversion

时间:2015-02-10 15:12:10      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

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) 
{
    int n=s.length();
    if (n==0||n==1||nRows==1||n<=nRows)
    {
        return s;
    }
    string temp="";
    int k=(n-1)/(2*nRows-2);
    for (int i=0;i<nRows;i++)
    {
        if ((i==0)||(i==nRows-1))
        {
            temp+=s[i];
            for (int j=1;(j<=k)&&((i+j*(2*nRows-2))<n);j++)
            {
                temp+=s[i+j*(2*nRows-2)];
            }
        }
        else
        {
             temp+=s[i];
            int ntemp=i;
            int klast=(n-1-(nRows-1))/(2*nRows-2);
            int kk=(klast!=k)?(2*k):(2*k+1);
            for (int j=1;((j<=kk)&&(ntemp<n));j++)
            {
                if (j%2)
                {
                    ntemp+=(2*nRows-2*i-2);
                } 
                else
                {
                    ntemp+=2*i;
                }
                if (ntemp<n)
                {
                    temp+=s[ntemp];
                }
                else if(i>=nRows)
                {
                    return temp;
                }
            }
        }
    }
    return temp;
}
};

 

leetcode[6]ZigZag Conversion

标签:

原文地址:http://www.cnblogs.com/Vae98Scilence/p/4283713.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!