一个 句子 由一些 单词 以及它们之间的单个空格组成,句子的开头和结尾不会有多余空格。
给你一个字符串数组 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] 中所有单词由单个空格隔开。
通过次数18,685提交次数21,970
来源:力扣(LeetCode)
一:
暴力求解:
直接算sentences中每个句子出现空格的数量,空格的数量进行加一操作,就是该句子的单词数量。
利用max函数。将每次计算出来的数量,与前一个最大的数量作比较。
这里假设一开始最大数量为0.每回都将做大的数存放在res中,res在与下一个句子计算出来的数量进行比较。
如果res,比下一个句子的单词数大,则res保持不变、
代码:
class Solution {
public:
int mostWordsFound(vector<string>& sentences) {
int res=0;
for(int i=0;i<sentences.size();i++)
{
int count=0;
for(int j=0;j<sentences[i].size();j++)
{
if(sentences[i][j]==' ')
count++;
}
res=max(res,count);
}
return res+1;
}
};
二:
利用count函数:
那么我们可以遍历句子数组,
通过统计每个句子的空格数量来计算它的单词数量,
同时维护这些句子单词数量的最大值。
当遍历完成后,我们返回该最大值作为答案。
class Solution {
public:
int mostWordsFound(vector& sentences) {
int res = 0;
for (const string& sentence: sentences) {
// 单词数 = 空格数 + 1
int cnt = count(sentence.begin(), sentence.end(), ' ') + 1;
res = max(res, cnt);
}
return res;
}
};