重新排列句子中的單詞
阿新 • • 發佈:2021-10-27
【leetcode 1451】重新排列句子中的單詞
①請你重新排列 text 中的單詞,使所有單詞按其長度的升序排列。如果兩個單詞的長度相同,則保留其在原句子中的相對順序。
②單詞以空格分開,句子首字母需大寫
方法一、利用匿名內部類Comparator並重寫compare方法實現根據單詞長度排序
public String arrangeWords(String s) { if(s.length()==0||s==null){ return s; } String[] ss=s.toLowerCase().split(" "); Arrays.sort(ss,new Comparator(){ @Override public int compare(String o1, String o2) { return o1.length()-o2.length();// 通過長度排序單詞 } }); StringBuilder res=new StringBuilder(); res.append(ss[0].substring(0,1).toUpperCase()); res.append(ss[0].substring(1)); for(int i=1;i<ss.length;i++){ res.append(" "); res.append(ss[i]); } return res.toString(); }
方法二、利用Java 8 新特性Stream。
利用Stream類中的sort方法,自定義排序規則
public static String arrangeWords(String s) { if(s.length()==0||s==null){ return s; } List<String> l=Arrays.asList(s.toLowerCase().split(" ")); l=l.stream().sorted(Comparator.comparing(String::length)).collect(Collectors.toList());//!!! StringBuilder rs=new StringBuilder(); l.forEach(s1->{ rs.append(s1); rs.append(" "); }); String result=rs.substring(0,1).toUpperCase()+rs.substring(1,rs.length()-1); return result; }
方法二有關Stream的相關操作的具體說明講在另一篇部落格中專門講述。。。先給自己留個坑,屆時連結會附在此處: