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".
关于这题,只要找到那个规律就行了,2nRows-2个字符一个循环,所以之后根据规律编写就行了。主要还是先理解这个题目意思。
public class Solution {
    public String convert(String s, int nRows) {
      String end = "";
        String[] temp = new String[nRows];
        for(int i = 0 ;i<nRows;i++){
        temp[i] = "";
        }
        int lineNum = 2*nRows-2;
        if(s.length()>nRows&&nRows != 1){
        for(int i = 0;i<s.length();i++){
        if((i+1)%lineNum - nRows > 0 ||(i+1)%lineNum == 0){
        int k = (i+1)%lineNum==0?lineNum - nRows: (i+1)%lineNum - nRows;
        temp[nRows-1-k] += s.charAt(i);
        }else{
        temp[(i+1)%lineNum-1] += s.charAt(i);
        }
        }
        for(String j : temp){
        end += j;
        }
        }else{
        end = s;
        }
        return end;
    }
}

猜你喜欢

转载自plan454.iteye.com/blog/2185520
今日推荐