Untitled
unknown
java
7 months ago
1.7 kB
8
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