leetcode6

作者: 小烈yhl | 来源:发表于2018-12-07 13:30 被阅读0次
    1. 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)

    image

    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 s, int numRows);

    Example 1:

    Input:s = "PAYPALISHIRING", numRows = 3

    Output:"PAHNAPLSIIGYIR"

    Example 2:

    Input:s = "PAYPALISHIRING", numRows = 4

    Output:"PINALSIGYAHRPI"

    Explanation:

    image

    思路:

    1、min(numRows,len(s))用其确定行数有多少

    2、用一个ArrayList<StringBuilder>记录每行的数据

    3、

    image
    
    class Solution {
    
        public String convert(String s, int numRows) {
    
            if (numRows == 1) return s;
    
            List<StringBuilder> rows = new ArrayList<>();
    
            for (int i = 0; i < Math.min(numRows, s.length()); i++)
    
                rows.add(new StringBuilder());
    
            int curRow = 0;
    
            boolean goingDown = false;
    
            for (char c : s.toCharArray()) {
    
                rows.get(curRow).append(c);
    
                if (curRow == 0 || curRow == numRows - 1) goingDown = !goingDown;
    
                curRow += goingDown ? 1 : -1;
    
            }
    
            StringBuilder ret = new StringBuilder();
    
            for (StringBuilder row : rows) ret.append(row);
    
            return ret.toString();
    
        }
    
    }
    
    

    相关文章

      网友评论

          本文标题:leetcode6

          本文链接:https://www.haomeiwen.com/subject/wfdthqtx.html