解法一

模拟。找出长度最长的单词,确定新单词的长度。按题目要求进行添加新字符,并去除结尾空格。

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. class Solution {
  4. public List<String> printVertically(String s) {
  5. String[] wordArr = s.split(" ");
  6. int len = 0;
  7. for (String str : wordArr) {
  8. len = Math.max(len, str.length());
  9. }
  10. List<String> ansArr = new ArrayList<>(len);
  11. for (int i = 0; i < len; ++i) {
  12. StringBuilder stringBuilder = new StringBuilder();
  13. for (int j = 0; j < wordArr.length; ++j) {
  14. if (wordArr[j].length() <= i) {
  15. stringBuilder.append(' ');
  16. } else {
  17. stringBuilder.append(wordArr[j].charAt(i));
  18. }
  19. }
  20. for (int j = stringBuilder.length() - 1; j >= 0; --j) {
  21. if (stringBuilder.charAt(j) == ' ') {
  22. stringBuilder.deleteCharAt(j);
  23. } else {
  24. break;
  25. }
  26. }
  27. ansArr.add(stringBuilder.toString());
  28. }
  29. return ansArr;
  30. }
  31. }