Clairezz 2020-05-17
package com.example.demo; /** * 5413. 重新排列句子中的单词 * 显示英文描述 * 我的提交 * 返回竞赛 * <p> * 通过的用户数 * 1668 * 尝试过的用户数 * 2012 * 用户总通过次数 * 1678 * 用户总提交次数 * 3409 * 题目难度 * Medium * 「句子」是一个用空格分隔单词的字符串。给你一个满足下述格式的句子 text : * 句子的首字母大写 * text 中的每个单词都用单个空格分隔。 * 请你重新排列 text 中的单词,使所有单词按其长度的升序排列。如果两个单词的长度相同,则保留其在原句子中的相对顺序。 * 请同样按上述格式返回新的句子。 * <p> * 示例 1: * 输入:text = "Leetcode is cool" * 输出:"Is cool leetcode" * 解释:句子中共有 3 个单词,长度为 8 的 "Leetcode" ,长度为 2 的 "is" 以及长度为 4 的 "cool" 。 * 输出需要按单词的长度升序排列,新句子中的第一个单词首字母需要大写。 * 示例 2: * 输入:text = "Keep calm and code on" * 输出:"On and keep calm code" * 解释:输出的排序情况如下: * "On" 2 个字母。 * "and" 3 个字母。 * "keep" 4 个字母,因为存在长度相同的其他单词,所以它们之间需要保留在原句子中的相对顺序。 * "calm" 4 个字母。 * "code" 4 个字母。 * 示例 3: * 输入:text = "To be or not to be" * 输出:"To be or to be not" */ public class Lc5413 { public static String arrangeWords(String text) { String[] strs = text.split(" "); for (int i = 0; i < strs.length; i++) { for (int j = 0; j < strs.length - 1; j++) { if (strs[j].length() > strs[j + 1].length()) { String temp = strs[j]; strs[j] = strs[j + 1]; strs[j + 1] = temp; } } } StringBuffer stringBuffer = new StringBuffer(); for (int i = 0; i < strs.length; i++) { if (i == 0) { String temp = strs[i].substring(0, 1).toUpperCase() + strs[i].substring(1, strs[i].length()); stringBuffer.append(temp); } else { stringBuffer.append(" "); stringBuffer.append(strs[i].toLowerCase()); } } return stringBuffer.toString(); } public static void main(String[] args) { // String str = "Leetcode is cool"; String str = "Keep calm and code on"; System.out.println(arrangeWords(str)); } }