6. ZigZag Conversion

来源:互联网 发布:淘宝买家怎么删除追评 编辑:程序博客网 时间:2024/06/01 08:46

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   NA P L S I I GY   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 text, int nRows);
convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".

Subscribe to see which companies asked this question

找好顺序,没别的

public class Solution {    public String convert(String s, int nRows) {        int len = s.length();        if (len == 0 || nRows <= 1) return s;                String[] ans = new String[nRows];        Arrays.fill(ans, "");        int row = 0, delta = 1;        for (int i = 0; i < len; i++) {            ans[row] += s.charAt(i);            row += delta;            if (row >= nRows) {                row = nRows-2;                delta = -1;            }            if (row < 0) {                row = 1;                delta = 1;            }        }                String ret = "";        for (int i = 0; i < nRows; i++) {            ret += ans[i];        }        return ret;    }}

0 0