列表

详情


3295. 举报垃圾信息

给你一个字符串数组 message 和一个字符串数组 bannedWords

如果数组中 至少 存在两个单词与 bannedWords 中的任一单词 完全相同,则该数组被视为 垃圾信息

如果数组 message 是垃圾信息,则返回 true;否则返回 false

 

示例 1:

输入: message = ["hello","world","leetcode"], bannedWords = ["world","hello"]

输出: true

解释:

数组 message 中的 "hello""world" 都出现在数组 bannedWords 中。

示例 2:

输入: message = ["hello","programming","fun"], bannedWords = ["world","programming","leetcode"]

输出: false

解释:

数组 message 中只有一个单词("programming")出现在数组 bannedWords 中。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: bool reportSpam(vector<string>& message, vector<string>& bannedWords) { } };

php 解法, 执行用时: 434 ms, 内存消耗: 54.6 MB, 提交时间: 2024-09-23 11:35:56

class Solution {

    /**
     * @param String[] $message
     * @param String[] $bannedWords
     * @return Boolean
     */
    function reportSpam($message, $bannedWords) {
        $banned = [];
        foreach ( $bannedWords as $word ) {
            $banned[$word] = true;
        }
        $seen = false;
        foreach ( $message as $m ) {
            if ( isset($banned[$m]) ) {
                if ( $seen ) return true;
                $seen = true;
            }
        }
        return false;
    }
}

golang 解法, 执行用时: 320 ms, 内存消耗: 23.8 MB, 提交时间: 2024-09-23 11:29:57

func reportSpam(message, bannedWords []string) bool {
	banned := map[string]bool{}
	for _, s := range bannedWords {
		banned[s] = true
	}

	seen := false
	for _, s := range message {
		if banned[s] {
			if seen {
				return true
			}
			seen = true
		}
	}
	return false
}

cpp 解法, 执行用时: 578 ms, 内存消耗: 281.8 MB, 提交时间: 2024-09-23 11:29:36

class Solution {
public:
    bool reportSpam(vector<string>& message, vector<string>& bannedWords) {
        unordered_set<string> banned(bannedWords.begin(), bannedWords.end());
        int cnt = 0;
        for (auto& s : message) {
            if (banned.contains(s) && ++cnt > 1) {
                return true;
            }
        }
        return false;
    }
};

java 解法, 执行用时: 46 ms, 内存消耗: 83.6 MB, 提交时间: 2024-09-23 11:29:22

class Solution {
    public boolean reportSpam(String[] message, String[] bannedWords) {
        Set<String> banned = new HashSet<>(Arrays.asList(bannedWords));
        int cnt = 0;
        for (String s : message) {
            if (banned.contains(s) && ++cnt > 1) {
                return true;
            }
        }
        return false;
    }
}

python3 解法, 执行用时: 192 ms, 内存消耗: 49.2 MB, 提交时间: 2024-09-23 11:29:08

class Solution:
    def reportSpam(self, message: List[str], bannedWords: List[str]) -> bool:
        banned = set(bannedWords)
        seen = False
        for s in message:
            if s in banned:
                if seen:
                    return True
                seen = True
        return False

python3 解法, 执行用时: 170 ms, 内存消耗: 49.1 MB, 提交时间: 2024-09-23 11:28:54

class Solution:
    def reportSpam(self, message: List[str], bannedWords: List[str]) -> bool:
        banned = set(bannedWords)
        return sum(s in banned for s in message) > 1

上一题