1.题目描述
2.知识点
(1)String.join(" ", words) 是 Java 中的一个语法,用于将数组或集合中的元素连接成一个单独的字符串,连接时使用指定的分隔符。这里的 " " 是作为分隔符使用的一个空格字符串。
String[] words = {"This", "is", "a", "test"};
//我们希望将这些单词连接成一个字符串,并在每个单词之间插入一个空格:
String result = String.join(" ", words);
//result 将会是:"This is a test"
(2)a.charAt(index) 是 Java 中 String 类的一个方法,用于返回字符串 a 中指定索引位置的字符。
public char charAt(int index)
(3)words 数组经过排序后是 {“This1”, “is2”, “a3”, “sentence4”}。
第一次迭代:
word = "This1";
word.substring(0, word.length() - 1) = "This";
result.append("This").append(" ");
result 变为 "This "。
第二次迭代:
word = "is2";
word.substring(0, word.length() - 1) = "is";
result.append("is").append(" ");
result 变为 "This is "。
第三次迭代:
word = "a3";
word.substring(0, word.length() - 1) = "a";
result.append("a").append(" ");
result 变为 "This is a "。
第四次迭代:
word = "sentence4";
word.substring(0, word.length() - 1) = "sentence";
result.append("sentence").append(" ");
result 变为 "This is a sentence "。
(4)转换为字符串并移除多余的空格:
result.toString().trim() = “This is a sentence”;
StringBuilder对象没有trim()方法,并且trim()方法属于String类,不能直接对StringBuilder对象调用trim()方法。另外,Java中的trim()方法是不可变的,这意味着trim()方法会返回一个新的String对象,而不会修改原始字符串。
3.代码实现
class Solution {public String sortSentence(String s) {String[] words=s.split(" ");Arrays.sort(words,(a,b)->Character.compare(a.charAt(a.length()-1),b.charAt(b.length()-1)));// 将排序后的单词连接成一个字符串,中间用空格分隔//return String.join(" ",words);StringBuilder sb=new StringBuilder();for(String word:words){sb.append(word.substring(0,word.length()-1)).append(" ");}return sb.toString().trim();}
}