2047. 句子中的有效单词数

Alex_Shen
2022-03-29 / 0 评论 / 0 点赞 / 111 阅读 / 1,045 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-03-31,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

句子仅由小写字母('a' 到 'z')、数字('0' 到 '9')、连字符('-')、标点符号('!'、'.' 和 ',')以及空格(' ')组成。每个句子可以根据空格分解成 一个或者多个 token ,这些 token 之间由一个或者多个空格 ' ' 分隔。

如果一个 token 同时满足下述条件,则认为这个 token 是一个有效单词:

仅由小写字母、连字符和/或标点(不含数字)。
至多一个 连字符 '-' 。如果存在,连字符两侧应当都存在小写字母("a-b" 是一个有效单词,但 "-ab" 和 "ab-" 不是有效单词)。
至多一个 标点符号。如果存在,标点符号应当位于 token 的 末尾 。
这里给出几个有效单词的例子:"a-b."、"afad"、"ba-c"、"a!" 和 "!" 。

给你一个字符串 sentence ,请你找出并返回 sentence 中 有效单词的数目 。

示例 1:

输入:sentence = "cat and dog"
输出:3
解释:句子中的有效单词是 "cat"、"and" 和 "dog"

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/number-of-valid-words-in-a-sentence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

代码:

class Solution:
    def countValidWords(self, sentence: str) -> int:
        wordlist=' '.join(sentence.split()).split(' ')
        cnt = 0
        for str in wordlist:
            flag = True;
            if str.count('-') > 1:
                continue
            for i, ch in enumerate(str):
                if ch.isdigit() or (ch in '!.,' and i != len(str) - 1):
                    flag = False
                    break
                if ch == '-':
                    left, right = str[:i], str[i+1:]
                    if not any(c.islower() for c in left) or not any(c.islower() for c in right):
                        flag = False
                        break;
            if flag:
                cnt += 1

        return cnt;
0

评论区