首页 > 学院 > 开发设计 > 正文

LeetCode-ZigZagConversion

2019-11-14 14:51:43
字体:
来源:转载
供稿:网友

题目:
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".

思路:

我是通过找规律找到每一行应该取哪个字符。

package string;public class ZigZagConversion {    public String convert(String s, int numRows) {        if (s == null || numRows == 1) return s;        int gap = 2 * (numRows - 1);        int len = s.length();        StringBuilder sb = new StringBuilder("");                for (int i = 0; i < numRows; ++i) {            for (int j = i; j < len; j += gap) {                sb.append(s.charAt(j));                int next = j + 2 * (numRows - i - 1);                if (i != 0 && i != numRows - 1 && next < len)                    sb.append(s.charAt(next));            }        }                return sb.toString();    }        public static void main(String[] args) {        // TODO Auto-generated method stub        String s = "A";        ZigZagConversion z = new ZigZagConversion();        System.out.PRintln(z.convert(s, 1));    }}

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表