LeetCode2047. 句子中的有效单词数(简单)

C o u n t   V a l i d   W o r d s Count\ Valid\ Words Count Valid Words

https://leetcode-cn.com/problems/number-of-valid-words-in-a-sentence/
 

题目描述


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

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

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

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

题目分析


 

要点

 
1. sentence按空格分割成单词。注意,空格可能不止一个。
2. 判断有效单词的条件:
     a. 不含数字
     b. 最多含有一个’-‘或’!‘或’.‘或’,’
     c. ‘-’两侧存在小写字母
     d. '!‘或’.‘或’,'必须在末尾
 

特殊用例

 
’-!’、’-.’、’-,'不成立
’a-’、’-a’不成立
注意’.‘成立和‘’-.'不成立的情况
 
 

方法一:直接if条件逻辑判断


 

Python3

 

import re

class Solution:
    def countValidWords(self, sentence: str) -> int:
        words_list = sentence.split()    # 按空格分割
        count = 0
        for word in words_list:
            # 1. 不含数字
            if bool(re.search(r'\d', word)):
                continue
            elif word.count('!') + word.count('.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值