# [LeetCode] 1816. 截断句子 ## 题目 句子 是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前导或尾随空格。每个单词仅由大小写英文字母组成(不含标点符号)。 例如,"Hello World"、"HELLO" 和 "hello world hello world" 都是句子。 给你一个句子 s​​​​​​ 和一个整数 k​​​​​​ ,请你将 s​​ 截断 ​,​​​使截断后的句子仅含 前 k​​​​​​ 个单词。返回 截断 s​​​​​​ 后得到的句子。 示例 1: ``` 输入:s = "Hello how are you Contestant", k = 4 输出:"Hello how are you" 解释: s 中的单词为 ["Hello", "how" "are", "you", "Contestant"] 前 4 个单词为 ["Hello", "how", "are", "you"] 因此,应当返回 "Hello how are you" ``` 示例 2: ``` 输入:s = "What is the solution to this problem", k = 4 输出:"What is the solution" 解释: s 中的单词为 ["What", "is" "the", "solution", "to", "this", "problem"] 前 4 个单词为 ["What", "is", "the", "solution"] 因此,应当返回 "What is the solution" 示例 3: 输入:s = "chopper is not a tanuki", k = 5 输出:"chopper is not a tanuki" ``` **提示**: 1 <= s.length <= 500 k 的取值范围是 [1,  s 中单词的数目] s 仅由大小写英文字母和空格组成 s 中的单词之间由单个空格隔开 不存在前导或尾随空格 >来源:力扣(LeetCode)
>链接:https://leetcode-cn.com/problems/truncate-sentence
>著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ## 题解 使用 rust str 提供的 split 函数 ``` rust struct Solution; impl Solution { pub fn truncate_sentence(s: String, k: i32) -> String { let vec:Vec<&str> = s.split(' ').collect(); let mut str = String::new(); for i in 0..k { str.push_str(vec[i as usize]); dbg!(i); if i!=(k-1) { str.push_str(" ");} } str } } fn main() { dbg!(Solution::truncate_sentence(String::from("Hello how are you Contestant"),4)); } ``` 更简: ``` rust impl Solution { pub fn truncate_sentence(s: String, k: i32) -> String { s.split_whitespace() .take(k as usize) .collect::>() .join(" ") } } // 作者:tab-liu // 链接:https://leetcode-cn.com/problems/truncate-sentence/solution/1816-jie-duan-ju-zi-by-tab-liu-uag8/ // 来源:力扣(LeetCode) ```