1324. 竖直打印单词

2023-01-12  本文已影响0人  程序员小2

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
坚持不懈,越努力越幸运,大家一起学习鸭~~~

题目:

给你一个字符串 s。请你按照单词在 s 中的出现顺序将它们全部竖直返回。
单词应该以字符串列表的形式返回,必要时用空格补位,但输出尾部的空格需要删除(不允许尾随空格)。
每个单词只能放在一列上,每一列中也只能有一个单词。

示例 1:

输入:s = "HOW ARE YOU"
输出:["HAY","ORO","WEU"]
解释:每个单词都应该竖直打印。
"HAY"
"ORO"
"WEU"
示例 2:

输入:s = "TO BE OR NOT TO BE"
输出:["TBONTB","OEROOE"," T"]
解释:题目允许使用空格补位,但不允许输出末尾出现空格。
"TBONTB"
"OEROOE"
" T"
示例 3:

输入:s = "CONTEST IS COMING"
输出:["CIC","OSO","N M","T I","E N","S G","T"]

提示:

1 <= s.length <= 200
s 仅含大写英文字母。
题目数据保证两个单词之间只有一个空格。

java代码:

class Solution {
    public List<String> printVertically(String s) {
        String[] strings = s.split(" ");
        int m = strings.length;
        int n = 0;
        for (String str : strings) {
            if (str.length() > n) {
                n = str.length();
            }
        }
        char[][] arr = new char[m][n];
        for (int i = 0; i < arr.length; i++) {
            String str = strings[i];
            for (int j = 0; j < str.length(); j++) {
                arr[i][j] = str.charAt(j);
            }
        }
        List<String> ans = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            StringBuffer str = new StringBuffer();
            int index = 0;
            for (int j = 0; j < m; j++) {
                if (arr[j][i] != '\u0000') {
                    index = j;
                    str.append(arr[j][i]);
                }else {
                    str.append(" ");
                }
            }
            ans.add(str.subSequence(0, index + 1).toString());
        }
        return ans;
    }
}

上一篇 下一篇

猜你喜欢

热点阅读