截断句子

184 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第17天,点击查看活动详情

题目描述

句子 是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前导或尾随空格。每个单词仅由大小写英文字母组成(不含标点符号)。
例如,"Hello World"、"HELLO" 和 "hello world hello world" 都是句子。
给你一个句子 s​​​​​​ 和一个整数 k​​​​​​ ,请你将 s​​ 截断 ​,​​​使截断后的句子仅含 前 k​​​​​​ 个单词。返回 截断 s​​​​​​ 后得到的句子。
来源:力扣(LeetCode)

  • 示例 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 中的单词之间由单个空格隔开
  • 不存在前导或尾随空格

思路分析

从题目上看,有一个句子,这个句子是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前导或尾随空格。每个单词仅由大小写英文字母组成(不含标点符号);给出这样的一个句子和一个整数k,将s截断,从前面开始数起,返回前面k个单词。
需要取到每个单词,最好就是用数组的方法,所以,我们先用split()方法将字符串s装换成数组,再循环数组,只取前面k个元素并push到新的空数组里面,这个数组就只含有k个元素,最后使用join()方法将数组转成字符串,用空格隔开,这样就能得到最后的结果了。

AC代码

function solution( s, k ) {
   let arr = s.split(' ');
   let newArr = [];
   let result = '';
   let index = 1;
   console.log(arr)
   for( let i = 0; i < arr.length; i++) {
       if(k >= index) {
           newArr.push(arr[i]);
           index += 1;
       }
   }
   result = newArr.join(' ');
   console.log(result);
}
let s = "Hello how are you Contestant", k = 4
solution(s, k);