520. 檢測大寫字母
我們定義,在以下情況時,單詞的大寫用法是正確的:
- 全部字母都是大寫,比如 “USA” 。
- 單詞中所有字母都不是大寫,比如 “leetcode” 。
- 如果單詞不只含有一個字母,只有首字母大寫,?比如?“Google” 。
給你一個字符串 word 。如果大寫用法正確,返回 true ;否則,返回 false 。
示例 1:
輸入:word = “USA”
輸出:true
示例 2:
輸入:word = “FlaG”
輸出:false
提示:
1 <= word.length <= 100
word 由小寫和大寫英文字母組成
解題思路
分類討論
- 當只有一個字符時,必然是大寫用法正確
- 當首字母是小寫時,后面的字母不能出現大寫
- 當首字母是大寫時,后面字母不能出現既有大寫又有小寫的情況
代碼
class Solution {
public:bool detectCapitalUse(string word) {if(word.size()==1) return true;if (islower(word[0])){for (auto c:word)if(isupper(c))return false;return true;}else {bool up(false),low(false);for (int i = 1; i < word.size(); ++i) {if(isupper(word[i]))up=true;else low= true;}return (up^low);}}
};