LeetCode 2047 句子中的有效单词数[re 正则表达式] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 2047 句子中的有效单词数[re 正则表达式] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
又是分词,又是字符串匹配,如果用C++将会是一件痛苦的事情,首先C++就没有分词的函数,其次字符串匹配涉及大量的判断条件,这与简单题的身份不符,而python绝对是解决此类问题的利器。首先用split分词,接着遍历每个单词,用re进行正则化匹配判断,统计符合条件的单词数,代码如下:

class Solution(object):
    def countValidWords(self, sentence):
        """
        :type sentence: str
        :rtype: int
        """
        words = sentence.split()
        ans = 0
        for word in words:
            # 有-则前后必有字母以及无-则其余有无都无所谓
            match = re.match(r'[a-z]+-?[a-z]+[!.,]?|[a-z]*[!.,]?', word)
            # 如果不是none且匹配是完整的单词而不是一部分            
            if match and match.group(0) == word:
                ans += 1
        return ans 

以上是关于LeetCode 2047 句子中的有效单词数[re 正则表达式] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 2047 句子中的有效单词数[re 正则表达式] HERODING的LeetCode之路

LeetCode2114. 句子中的最多单词数(C++)

LeetCode2114. 句子中的最多单词数(C++)

算法2114. 句子中的最多单词数(java / c / c++ / python / go / rust)

算法2114. 句子中的最多单词数(java / c / c++ / python / go / rust)

leetcode-884两句话中的不常见单词