文章--LeetCode算法--TwoSumZigZagConversion

ZigZagConversion

问题描述

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 text, int nRows);

convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".

代码实现

    public class Solution {
        public String convert(String s, int numRows) {
            char[] c = s.toCharArray();
            int len = c.length;
            StringBuffer[] sb = new StringBuffer[numRows];
            for (int i = 0; i < sb.length; i++)
                sb[i] = new StringBuffer();
            int i = 0;
            while (i < len) {
                for (int idx = 0; idx < numRows && i < len; idx++)
                    sb[idx].append(c[i++]);
                for (int idx = numRows - 2; idx >= 1 && i < len; idx--)
                    sb[idx].append(c[i++]);
            }
            for (int idx = 1; idx < sb.length; idx++)
                sb[0].append(sb[idx]);
            return sb[0].toString();
        }
    }

posted @ 2019-07-18 13:48  AI,me  阅读(67)  评论(0编辑  收藏  举报