2114-句子中的最多单词数

Raphael Liu Lv10

一个 句子 由一些 单词 以及它们之间的单个空格组成,句子的开头和结尾不会有多余空格。

给你一个字符串数组 sentences ,其中 sentences[i] 表示单个 句子

请你返回单个句子里 单词的最多数目

示例 1:

**输入:** sentences = ["alice and bob love leetcode", "i think so too", _**"this is great thanks very much"**_ ]
**输出:** 6
**解释:**
- 第一个句子 "alice and bob love leetcode" 总共有 5 个单词。
- 第二个句子 "i think so too" 总共有 4 个单词。
- 第三个句子 "this is great thanks very much" 总共有 6 个单词。
所以,单个句子中有最多单词数的是第三个句子,总共有 6 个单词。

示例 2:

**输入:** sentences = ["please wait", _**"continue to fight"**_ , _**"continue to win"**_ ]
**输出:** 3
**解释:** 可能有多个句子有相同单词数。
这个例子中,第二个句子和第三个句子(加粗斜体)有相同数目的单词数。

提示:

  • 1 <= sentences.length <= 100
  • 1 <= sentences[i].length <= 100
  • sentences[i] 只包含小写英文字母和 ' '
  • sentences[i] 的开头和结尾都没有空格。
  • sentences[i] 中所有单词由单个空格隔开。

方法一:计算空格数量

思路与算法

由于一个句子开头结尾均不含空格,且单词之间均只含一个空格,因此一个句子中的单词数一定等于空格数加上 1

那么我们可以遍历句子数组,通过统计每个句子的空格数量来计算它的单词数量,同时维护这些句子单词数量的最大值。当遍历完成后,我们返回该最大值作为答案。

代码

[sol1-C++]
1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
int mostWordsFound(vector<string>& sentences) {
int res = 0;
for (const string& sentence: sentences) {
// 单词数 = 空格数 + 1
int cnt = count(sentence.begin(), sentence.end(), ' ') + 1;
res = max(res, cnt);
}
return res;
}
};
[sol1-Python3]
1
2
3
4
5
6
7
8
class Solution:
def mostWordsFound(self, sentences: List[str]) -> int:
res = 0
for sentence in sentences:
# 单词数 = 空格数 + 1
cnt = sentence.count(' ') + 1
res = max(res, cnt)
return res

复杂度分析

  • 时间复杂度:O(\sum_i n_i),其中 n_i 为 sentences}[i] 的长度。即为遍历字符串统计单词数并维护最大值的时间复杂度。

  • 空间复杂度:O(n)。

 Comments
On this page
2114-句子中的最多单词数