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 text, int nRows);
convert("PAYPALISHIRING", 3)  should return  "PAHNAPLSIIGYIR" .

二、思路、

找到规律,遍历即可。

三、代码

public class Solution {
    public String convert(String s, int numRows) {
        if(numRows <= 1)  return s;
        
        int len = s.length();
        String [] rows =  new String [numRows];
        for (int i = 0; i < numRows; ++i)
            rows[i] = "";
            
        int size = 2 * (numRows - 1);
        for(int i = 0; i < numRows; ++i)
            for(int j = 0;j < len; j = j + size){
                 if(i + j < len)
                    rows[i] += s.charAt(j + i);
                 if(i != 0 && i != numRows - 1 && j + size - i < len)
                    rows[i] += s.charAt(j + size - i);
        }
        
        String result = "";
        for(int i = 0;i < numRows;++i){
            result += rows[i];
        }
        return result;
    }
}


你可能感兴趣的:(java,LeetCode)