Skip to content

Latest commit

 

History

History
205 lines (162 loc) · 4.64 KB

File metadata and controls

205 lines (162 loc) · 4.64 KB

English Version

题目描述

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

给你一个字符串数组 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 即可。

Python3

class Solution:
    def mostWordsFound(self, sentences: List[str]) -> int:
        return 1 + max(s.count(' ') for s in sentences)

Java

class Solution {

    public int mostWordsFound(String[] sentences) {
        int ans = 0;
        for (String s : sentences) {
            ans = Math.max(ans, 1 + count(s, ' '));
        }
        return ans;
    }

    private int count(String s, char c) {
        int cnt = 0;
        for (char ch : s.toCharArray()) {
            if (ch == c) {
                ++cnt;
            }
        }
        return cnt;
    }
}

C++

class Solution {
public:
    int mostWordsFound(vector<string>& sentences) {
        int ans = 0;
        for (string& s : sentences)
            ans = max(ans, 1 + count(s, ' '));
        return ans;
    }

    int count(string s, char c) {
        int cnt = 0;
        for (char& ch : s)
            if (ch == c)
                ++cnt;
        return cnt;
    }
};

Go

func mostWordsFound(sentences []string) int {
	count := func(s string, c rune) int {
		cnt := 0
		for _, ch := range s {
			if ch == c {
				cnt++
			}
		}
		return cnt
	}
	ans := 0
	for _, s := range sentences {
		ans = max(ans, 1+count(s, ' '))
	}
	return ans
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}

TypeScript

function mostWordsFound(sentences: string[]): number {
    return sentences.reduce(
        (r, s) =>
            Math.max(
                r,
                [...s].reduce((r, c) => r + (c === ' ' ? 1 : 0), 1),
            ),
        0,
    );
}

Rust

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
    }
}

C

#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;
}

...