持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
一、题目描述:
句子 是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前导或尾随空格。每个单词仅由大小写英文字母组成(不含标点符号)。
例如,"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 中的单词之间由单个空格隔开 不存在前导或尾随空格
二、思路分析:
这题也比较简单,先把字符串转化为字符数组,输出前k个单词,可以理解为输出第k个空格(如果存在)之前的所有字符。 考虑一般情况:找到第k个空格,记下此时字符数组下标,然后利用字符串截取函数进行截取即可。 特殊情况:1、就一个单词的字符串。全部截取,count=字符串的长度即可 2、空格数=k-1,直接返回该字符串。
三、AC 代码:
class Solution {
public String truncateSentence(String s, int k) {
char[] chars = s.toCharArray();
int count =0;
for (int i = 0; i < chars.length; i++) {
if (chars[i]==' ') {
count++;
}
if (count==k) {
count=i;
break;
}
}
return count!=0&&count == k-1?s:(s.substring(0,count=count==0?s.length():count));
}
}
四、总结:
掘友们,解题不易,留下个赞或评论再走吧!谢啦~ 💐
希望对你有帮助
期待下次再见~
🌇 点赞 👍 收藏 ⭐留言 📝 一键三连 ~关注从你我做起!