携手创作,共同成长!这是我参与「掘金日新计划 · 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);