方法1: 1.思路:最开始想到的是对字符串分割,创建一个空串,将前k个单词拼接起来。 2.代码: class Solution { public String truncateSentence(String s, int k) { String[] str = s.split(" "); String res = ""; for (int i = 0; i < k; i++){ if(i == k- 1){ res += str[i]; }else { res = res + str[i]+ " "; } } return res; } } 3.复杂度分析:时间为0(n),空间为0(n),每次拼接都要开辟空间。 方法2: 思路:虽然问题解决了,但是代码效率也太拉跨了吧。根据宫水三叶的方法,使用StringBuilder,也不需要分割字符串,append就完事了。 代码: class Solution { public String truncateSentence(String s, int k) { StringBuilder sb= new StringBuilder(); int cout = 0; int n = s.length(); for (int i = 0; i < n ; i++){ char c = s.charAt(i); if(c == ' ') cout++; if(cout < k) { sb.append(c); }else{ break; } } return sb.toString(); } } 复杂度分析:时间o(n),空间0(n)