二、竖直打印单词(Weekly Contest 172)

时光毁灭记忆、已成空白 提交于 2020-01-20 00:47:05

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/print-words-vertically
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
    
	public List<String> printVertically(String s) {
		String[] split = s.split(" ");
		int maxlen = 0;
		for (String string : split) {
			maxlen = Math.max(maxlen, string.length());
		}
		
		List<String> list = new ArrayList<>(maxlen);
		for (int i = 0; i < maxlen; i++) {
			StringBuilder sBuilder = new StringBuilder();
			for (String string : split) {
				if(i >= string.length()){
					sBuilder.append(" ");
				}else{
					sBuilder.append(string.charAt(i));
				}
			}
			list.add(removelastbank(sBuilder));
		}
		return list;

	}
	public String removelastbank(StringBuilder sBuilder){
		String temString = new String(sBuilder);
		int index = temString.length() - 1;
		while (index >= 0 && temString.charAt(index) == ' ') {
			index --;
		}
		StringBuilder stringBuilder = new StringBuilder();
		for (int i = 0; i <= index; i++) {
			
			stringBuilder.append(temString.charAt(i));
		}
		return stringBuilder.toString();
		
	}
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!