LeetCode刷题记录——06 Z字形变换
一 题目描述:
-
将一个给定的字符串根据给定的行数,以从上往下,从左往右进行Z字形排列
-
比如输入字符串为“LEETCODEISHIRING”,行数为3时
-
排列如下:
-
L C I R E T O E S I I G E D H N
-
-
输入:LEETCODEISHIRING numRows = 3 输出:LCIRETOESIIGEDHN
-
二 思路:
-
依次遍历字符串,对于每次遍历到的字符,找到其应该的位置,如此反复;模拟行索引的变换,把s中的每一个字符填到正确的res[i]中
-
flag:用于在Z字行转点时,执行反向的操作
-
class Solution { public: string convert(string s, int numRows) { if(numRows <2) return s; vector<string> re(numRows,""); int i = 0,flag = -1; int j; for(j = 0;j<s.length();j++){ re[i] += s[j]; if(i == 0 || i == numRows -1) flag = - flag; //flag的作用很重要!!! i += flag; } string result = ""; for(string row : re) result += row; return result; } };
-