c语言练习69:句⼦中的最多单词数

句⼦中的最多单词数

题⽬描述:

⼀个 句⼦ 由⼀些 单词 以及它们之间的单个空格组成,句⼦的开头和结尾不会有多余空格。 给你⼀个字符串数组 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. 定义⼀个变量 max ,并将其初始化为0;

2. 遍历⼆维字符串数组中每⼀维,定义⼀个变量 word ,并将其初始化为1;

3. 若当前字符为空格, word 的值加⼀;

4. 当前维遍历结束时,将 max 的值更新为 max 和 word 的最⼤值。

5. 当每⼀维数组都遍历结束时,返回 max 。

int mostWordsFound(char** sentences, int sentencesSize) {
	int i = 0;
	int max = 0;
	//题⽬给了数组⻓度参数,我们可以直接利⽤下标遍历数组,i表⽰当前遍历的是第i个⼀维数组
	for (i = 0; i < sentencesSize; i++) {
		int j = 0;
		//记录单词数,没有空格时单词数为1
		int word = 1;
		//j表⽰当前遍历的是第i个⼀维数组中的第j个字符
		while (sentences[i][j]) {
			//当遍历到空格时,记录次数,单词数+1
			if (sentences[i][j] = ' ')
				word++;
			j++;
		}
		//遍历完⼀维,更新单词数最⼤值
		if (word > max)
			max = word;
	}
	//返回单词数最⼤值
	return max;
}

你可能感兴趣的:(c语言,开发语言)