【leetcode 每日打卡】2047. 句子中的有效单词数

【leetcode 每日打卡】2047. 句子中的有效单词数_第1张图片

class Solution:
    def countValidWords(self, sentence: str) -> int:
        def valid(s: str) -> bool:
            hasHyphens = False
            for i, ch in enumerate(s):
                if ch.isdigit() or ch in "!.," and i < len(s) - 1:
                    return False
                if ch == '-':
                    if hasHyphens or i == 0 or i == len(s) - 1 or not s[i - 1].islower() or not s[i + 1].islower():
                        return False
                    hasHyphens = True
            return True

        return sum(valid(s) for s in sentence.split())

1.首先将字符串sentence遍历,通过空格分割成每个单词

2.通过valid()来判断每个单词的每一个字符串ch,如果ch是纯数字或者有标点符号而且没有超出范围,就返回false

3.如果ch等于'-',如果它是第一个或者最后一个或者它的两侧不是小写单词或者之前存在过'-',就返回false,其他情况就跳过并且标记已存在

4.总结来看,只需要遍历每个单词的每个字符,确保其中不含有标点符号和数字,'-'做特殊处理,就可以判断这个单词是否有效。

你可能感兴趣的:(leetcode,leetcode,算法,职场和发展,python)