先split,然后对每个字符串进行判断。
1. 字符串中不能出现数字,且标点只能出现在最后。
2. 只能出现一次-,且-前后必须是小写字符,且-不能出现在开头结尾。
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())