LeetCode - ZigZag Conversion

来源:互联网 发布:linux 挂载有数据硬盘 编辑:程序博客网 时间:2024/06/02 05:45

https://leetcode.com/problems/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   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".

这道题只要看出规律是按 2×nRows-2重复就行,然后按照规律再每行依次打印就可以了。

public class Solution {    public String convert(String s, int nRows) {        if(s==null || s.length()==0 || nRows<=0) return "";        if(nRows == 1) return s;        int size = 2*nRows - 2;                StringBuilder sb = new StringBuilder();                for(int i=0; i<nRows; i++){            for(int j=i; j<s.length(); j+= size){                sb.append(s.charAt(j));                int next = (size - j%size) + size * (j/size);                if(i!=0 && i!=(nRows-1) && next<s.length()) sb.append(s.charAt(next));            }        }        return sb.toString();    }}


0 0
原创粉丝点击