6. ZigZag Conversion

6. ZigZag Conversion

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

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

And then read line by line: "PAHNAPLSIIGYIR"

Write the code that will take a string and make this conversion given a number of rows:

string convert(string s, int numRows);

Example 1:

Input: s = "PAYPALISHIRING", numRows = 3
Output: "PAHNAPLSIIGYIR"

Example 2:

Input: s = "PAYPALISHIRING", numRows = 4
Output: "PINALSIGYAHRPI"
Explanation:

P     I    N
A   L S  I G
Y A   H R
P     I
题意:将给定字符串字符排列成给定的图形,给定行数
代码如下(js):
var convert = function(s, numRows) {
    if(s.length==1 || numRows==0 || numRows==1){
        return s;
    }
    var len=s.length;
    var stepLen=2*(numRows-1);
    var str='';
    //纵向
    for(var i=0;i<numRows;i++){
        //横向遍历 步长为stepLen
        for(var j=i;j<len;j+=stepLen){
            str+=s.charAt(j);
            //只有一个元素的列
            if(i!=0 && i!=numRows-1 && j-2*i+stepLen<len){
                str+=s.charAt(j-2*i+stepLen)
            }
        }
    }
    return str;
};

 

上一篇:leetcode -- 6.Z 字形变换


下一篇:LeetCode(6. Z 字形变换)