Untitled
unknown
java
21 days ago
1.7 kB
6
Indexable
package medium; public class ZigZagConversion { public String convert(String s, int numRows) { if (s.length() == 1 || numRows == 1 || numRows > s.length()) { return s; } int rows = s.length(), cols = s.length(); char[][] matrix = new char[rows][cols]; int linha = 0; int coluna = 0; int descending = 1; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (linha < numRows) { matrix[linha][coluna] = c; if (linha > 0 && coluna > 0 && descending == 0) { linha--; coluna++; } else { if (linha == 0) descending = 1; linha++; } } else { descending = 0; linha--; linha--; coluna++; matrix[linha][coluna] = c; if (linha > 0) { linha--; coluna++; } else linha++; } } StringBuilder res = new StringBuilder(); for (int i = 0; i < numRows; i++) { for (int j = 0; j < matrix[i].length; j++) { if (res.length() == s.length()) return res.toString(); if (Character.isLetter(matrix[i][j]) || matrix[i][j] == '.' || matrix[i][j] == ',') res.append(matrix[i][j]); } } return res.toString(); } public static void main(String[] args) { ZigZagConversion zigZagConversion = new ZigZagConversion(); String res = zigZagConversion.convert("PAYPALISHIRING", 4); //String res = zigZagConversion.convert("ABCD", 2); System.out.println(res); } } // PINALSIGYAHRPI => 4 // PAHNAPLSIIGYIR => 3
Editor is loading...
Leave a Comment