展开了,把不符合条件的全部返回False。细心点就好了。
class Solution:
def countValidWords(self, sentence: str) -> int:
lst = sentence.split(' ')
hyphens = False
res = 0
#print(lst)
for part in lst:
if part == '':
continue
if self.check(part):
res += 1
#print(part)
#print(' ')
return res
def check(self, part):
N = len(part)
countpunc = 0
counthyphen = 0
for i, letter in enumerate(part):
if letter.isdigit():
return False
if letter.isalpha():
continue
if N > 1 and i < N- 1 and (letter == '!' or letter == ',' or letter == '.'):
return False#寻找合法的punc
if letter == '!' or letter == ',' or letter == '.':
countpunc += 1
if countpunc > 1:
return False#punc重复
if letter == '-' and (i == 0 or i == N-1):
return False#hyphen不在头尾
if letter == '-' and (not part[i-1].isalpha() or not part[i+1].isalpha()):
return False#hyphen前后不都是letter
if letter == '-':
counthyphen += 1
if counthyphen > 1:
return False#hyphen重复
return True