| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- public class Transpose {
- public String transpose(String toTranspose) {
-
- StringBuilder transposedForm = new StringBuilder();
- String[] rows = toTranspose.split("\n");
-
- int maxRowSize = 0;
-
- for (int i = 0; i < rows.length; i++) {
- if (rows[i].length() > maxRowSize) {
- maxRowSize = rows[i].length();
- }
- }
-
- padRows(rows);
-
- for (int newRowOldCol = 0; newRowOldCol < maxRowSize; newRowOldCol++) {
- for (int newColOldRow = 0; newColOldRow < rows.length; newColOldRow++) {
- if (newRowOldCol < rows[newColOldRow].length()) {
- transposedForm.append(rows[newColOldRow].charAt(newRowOldCol));
- }
- }
-
- if (newRowOldCol != maxRowSize - 1) {
- transposedForm.append("\n");
- }
- }
-
- return transposedForm.toString();
- }
-
- private void padRows(String[] rows) {
- for (int i = 0; i < rows.length; i++) {
- for (int j = i; j < rows.length; j++) {
- if(rows[j].length() > rows[i].length()) {
- rows[i] = String.format("%-" + rows[j].length() + "s", rows[i]);
- }
- }
- }
- }
- }
|