将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
class Solution { public: string convert(string s, int numRows) { string result=""; //如果排序长度为1,或者字符的长度小于z字形长度,就直接输出s if(numRows==1||s.size()<=numRows) return s; //从第一行依次遍历到最后一行 for(int rows=0;rows<numRows;rows++) { //first为直列所在的字符串位置 int first=rows; //second为斜线所在列的字符串的位置 int second=2*numRows-2-rows; //判断直列是否存在 for(;first<s.size();) { //如果存在,就将first存在result中 result+=s[first]; //关键,判断是否斜列存在,行数为0或者为最后一行时不存在;并且判断位置是否大于字符串长度 if(rows!=0&&rows!=numRows-1&&second<s.size()) { result+=s[second]; } //下一个位置,每行一直一斜,依次下去 first+=2*numRows-2; second+=2*numRows-2; } } return result; } };