"""
520. 檢測大寫字母
給定一個單詞,你需要判斷單詞的大寫使用是否正確。
我們定義,在以下情況時,單詞的大寫用法是正確的:
全部字母都是大寫,比如"USA"。
單詞中所有字母都不是大寫,比如"leetcode"。
如果單詞不只含有一個字母,只有首字母大寫, 比如 "Google"。
否則,我們定義這個單詞沒有正確使用大寫字母。
示例 1:
輸入: "USA"
輸出: True
示例 2:
輸入: "FlaG"
輸出: False
注意: 輸入是由大寫和小寫拉丁字母組成的非空單詞。
"""
# 方法一:用built-in函數
class Solution:
def detectCapitalUse(self, word: str) -> bool:
# 用built-in函數
return word == word.upper() or word == word.lower() or word == word.capitalize()
# 執行用時 :36 ms, 在所有 Python3 提交中擊敗了87.43%的用戶
# 內存消耗 :13.5 MB, 在所有 Python3 提交中擊敗了33.33%的用戶
# 方法三:統計大寫字母個數,並分類處理
class Solution2:
def detectCapitalUse(self, word: str) -> bool:
import string
capital__num = 0
for i in word:
if i in string.ascii_uppercase:
capital__num += 1
if capital__num == 0 or capital__num == len(word):
return True
elif capital__num == 1 and word[0] in string.ascii_uppercase:
return True
else:
return False
s = Solution()
for str in ["USA", "SSa", "abc", "aBC", "", "Abc"]:
print(s.detectCapitalUse(str))
# 執行用時 :44 ms, 在所有 Python3 提交中擊敗了48.11%的用戶
# 內存消耗 :13.7 MB, 在所有 Python3 提交中擊敗了33.33%的用戶