【6. N 字形变换】

目录

  • 一、题目描述
  • 二、算法原理
  • 三、代码实现

一、题目描述

【6. N 字形变换】_第1张图片

二、算法原理

【6. N 字形变换】_第2张图片

三、代码实现

class Solution {
public:
    string convert(string s, int numRows) 
    {
        if(numRows==1)
        {
            return s;
        }
        string ret;
        int d = 2 * numRows - 2;
        //第0行
        size_t i = 0, n = s.size();
        while (i < n)
        {
            ret += s[i];
            i += d;
        }
        //第1-n-2行
        for (int i = 1; i < numRows-1; i++)
        {
            int k = i;
            int m = d - i;
            while ((k < n) || (m < n))
            {
                if (k < n)
                {
                    ret += s[k];
                    k += d;
                }
                if (m < n)
                {
                    ret += s[m];
                    m += d;
                }
            }
        }
        //第n-1行
        i = numRows - 1;
        while (i < n)
        {
            ret += s[i];
            i += d;
        }
        return ret;
    }
};

你可能感兴趣的:(算法)