【Leetcode】1324. Print Words Vertically

題目地址:

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);
    }
}

時間複雜度O(n)O(n)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章