題目地址:
https://leetcode.com/problems/print-words-vertically/
給定一個英文句子,單詞以空格分隔,要求按照豎着的順序遍歷單詞,將每一列存入結果後返回。每一列開頭長度不夠用空格補,但尾端的空格需要去掉。
直接按照要求做即可,豎着遍歷單詞。代碼如下:
import java.util.ArrayList;
import java.util.List;
public class Solution {
public List<String> printVertically(String s) {
List<String> res = new ArrayList<>();
if (s == null || s.isEmpty()) {
return res;
}
String[] strs = s.split(" ");
int maxLen = 0;
for (String str : strs) {
maxLen = Math.max(maxLen, str.length());
}
for (int i = 0; i < maxLen; i++) {
StringBuilder sb = new StringBuilder();
for (String str : strs) {
if (i < str.length()) {
sb.append(str.charAt(i));
} else {
sb.append(' ');
}
}
trimRight(sb);
res.add(sb.toString());
}
return res;
}
// 去掉右邊的空格
private void trimRight(StringBuilder sb) {
int i = sb.length() - 1;
while (sb.charAt(i) == ' ') {
i--;
}
sb.setLength(i + 1);
}
}
時間複雜度。