1324. 竖直打印单词

给你一个字符串 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 仅含大写英文字母。
  • 题目数据保证两个单词之间只有一个空格。
package Solution1324;

import java.util.ArrayList;
import java.util.List;

class Solution {
	public List<String> printVertically(String s) {
		List<String> out = new ArrayList<String>();
		int max = 0;
		String[] arr = s.split("\\s+");
		for (int i = 0; i < arr.length; i++) {
			if (arr[i].length() > max) {
				max = arr[i].length();
			}
		}
		for (int i = 0; i < max; i++) {
			String temp = "";
			for (int j = 0; j < arr.length; j++) {
				if (arr[j].length() > i) {
					temp = temp + arr[j].substring(i, i + 1);
				} else {
					temp = temp + " ";
				}
			}
			temp = temp.replaceAll("\\s+$", "");
			out.add(temp);
		}
		return out;
	}

	public static void main(String[] args) {

		Solution sol = new Solution();

		String s = "TO BE OR NOT TO BE";

		System.out.println(sol.printVertically(s));
	}

}

猜你喜欢

转载自blog.csdn.net/allway2/article/details/115302940