这道题直接分3种情况讨论:1、全部都为大写;2、全部都为小写;3、首字母大写其余小写。这里我借用了一个全是大写字母的串和一个全为小写字母的串进行比较
class Solution(object):
def detectCapitalUse(self, word):
"""
:type word: str
:rtype: bool
"""
lo = word.lower()
up = word.upper()
if word == lo or word == up:
return True
if word[0] == up[0] and word[1:] == lo[1:]:
return True
return False
题解的方法总是很巧妙简洁
class Solution:
def detectCapitalUse(self, word: str) -> bool:
# 若第 1 个字母为小写,则需额外判断第 2 个字母是否为小写
if len(word) >= 2 and word[0].islower() and word[1].isupper():
return False
# 无论第 1 个字母是否大写,其他字母必须与第 2 个字母的大小写相同
return all(word[i].islower() == word[1].islower() for i in range(2, len(word)))