lots of exercises in java... from https://github.com/exercism/java

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. public class Transpose {
  2. public String transpose(String toTranspose) {
  3. StringBuilder transposedForm = new StringBuilder();
  4. String[] rows = toTranspose.split("\n");
  5. int maxRowSize = 0;
  6. for (int i = 0; i < rows.length; i++) {
  7. if (rows[i].length() > maxRowSize) {
  8. maxRowSize = rows[i].length();
  9. }
  10. }
  11. padRows(rows);
  12. for (int newRowOldCol = 0; newRowOldCol < maxRowSize; newRowOldCol++) {
  13. for (int newColOldRow = 0; newColOldRow < rows.length; newColOldRow++) {
  14. if (newRowOldCol < rows[newColOldRow].length()) {
  15. transposedForm.append(rows[newColOldRow].charAt(newRowOldCol));
  16. }
  17. }
  18. if (newRowOldCol != maxRowSize - 1) {
  19. transposedForm.append("\n");
  20. }
  21. }
  22. return transposedForm.toString();
  23. }
  24. private void padRows(String[] rows) {
  25. for (int i = 0; i < rows.length; i++) {
  26. for (int j = i; j < rows.length; j++) {
  27. if(rows[j].length() > rows[i].length()) {
  28. rows[i] = String.format("%-" + rows[j].length() + "s", rows[i]);
  29. }
  30. }
  31. }
  32. }
  33. }