一个 句子 由一些 单词 以及它们之间的单个空格组成,句子的开头和结尾不会有多余空格。
给你一个字符串数组 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]
中所有单词由单个空格隔开。
方法一:空格计数
我们遍历数组 sentences
,对于每个句子,我们计算其中的空格数,那么单词数就是空格数加
时间复杂度 sentences
中所有字符串的长度之和。
class Solution:
def mostWordsFound(self, sentences: List[str]) -> int:
return 1 + max(s.count(' ') for s in sentences)
class Solution {
public int mostWordsFound(String[] sentences) {
int ans = 0;
for (var s : sentences) {
int cnt = 1;
for (int i = 0; i < s.length(); ++i) {
if (s.charAt(i) == ' ') {
++cnt;
}
}
ans = Math.max(ans, cnt);
}
return ans;
}
}
class Solution {
public:
int mostWordsFound(vector<string>& sentences) {
int ans = 0;
for (auto& s : sentences) {
int cnt = 1 + count(s.begin(), s.end(), ' ');
ans = max(ans, cnt);
}
return ans;
}
};
func mostWordsFound(sentences []string) (ans int) {
for _, s := range sentences {
cnt := 1 + strings.Count(s, " ")
if ans < cnt {
ans = cnt
}
}
return
}
function mostWordsFound(sentences: string[]): number {
return sentences.reduce(
(r, s) =>
Math.max(
r,
[...s].reduce((r, c) => r + (c === ' ' ? 1 : 0), 1),
),
0,
);
}
impl Solution {
pub fn most_words_found(sentences: Vec<String>) -> i32 {
let mut ans = 0;
for s in sentences.iter() {
let mut count = 1;
for c in s.as_bytes() {
if *c == b' ' {
count += 1;
}
}
ans = ans.max(count);
}
ans
}
}
#define max(a, b) (((a) > (b)) ? (a) : (b))
int mostWordsFound(char **sentences, int sentencesSize) {
int ans = 0;
for (int i = 0; i < sentencesSize; i++) {
char *s = sentences[i];
int count = 1;
for (int j = 0; s[j]; j++) {
if (s[j] == ' ') {
count++;
}
}
ans = max(ans, count);
}
return ans;
}