力扣——Z字型变换

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:

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

之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"

请你实现这个将字符串进行指定行数变换的函数:

string convert(string s, int numRows);
 /*
 * Z字型变换,
 * 建议,自己模拟一遍,很容易就懂了
 */
 string convert(string s, int numRows) {
     //1,特殊情况
     if (s.size() == 1 || numRows == 1) {
         return s;
     }

     vectorv(numRows);//定义一个容器,存放string类型的数据

     int flag = -1;//用来控制上下
     int j = 0;
     for (int  i = 0; i < s.size(); i++)
     {
         v[j] += s[i];
         if (j == 0 || numRows - 1 == j) {
             flag = -flag;
         }
         j += flag;

     }

     //开始合并
     for (int i = 1; i < numRows; i++)
     {
         v[0] += v[i];
     }

     return v[0];
 }

https://leetcode.cn/problems/zigzag-conversion/description/

你可能感兴趣的:(leetcode,算法,数据结构)