LeetCode 6 Z 字形变换 发表于 2019-01-31 分类于 algorithm 本文字数: 936 阅读时长 ≈ 1 分钟 1234567891011121314151617181920212223242526将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入: s = "LEETCODEISHIRING", numRows = 3输出: "LCIRETOESIIGEDHN"示例 2:输入: s = "LEETCODEISHIRING", numRows = 4输出: "LDREOEIIECIHNTSG"解释:L D RE O E I IE C I H NT S G 从左到右计算当前字符应该放在第几行,最后所有行连起来。 1234567891011121314151617181920class Solution {public: string convert(string s, int numRows) { string row[numRows]; if(numRows==1) return s; for(int i=0;i<s.size();++i) { int t = i%(numRows*2-2); if(t<numRows) row[t] += s[i]; else row[numRows*2-t-2] += s[i]; } string res = ""; for(int i=0;i<numRows;++i) res += row[i]; return res; }};