Lc5413_重新排列句子中的单词
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));
}
} 相关推荐
ElmStudios 2018-06-06
小发猫 2020-02-02
Hwaphon 2019-11-25
tjuvirus 2012-03-08
sunbrother 2019-06-28
unkownwind 2018-04-22
lookFuture 2018-12-13
minerzhu 2018-05-30
minushuang 2018-08-19
张明云的知识共享 2018-03-16
彳亍 2017-10-15