題目描述
給定一個單詞,你需要判斷單詞的大寫使用是否正確。
我們定義,在以下情況時,單詞的大寫用法是正確的:
全部字母都是大寫,比如"USA"。
單詞中所有字母都不是大寫,比如"leetcode"。
如果單詞不只含有一個字母,只有首字母大寫, 比如 “Google”。
否則,我們定義這個單詞沒有正確使用大寫字母。
示例 1:
輸入: “USA”
輸出: True
示例 2:
輸入: “FlaG”
輸出: False
注意: 輸入是由大寫和小寫拉丁字母組成的非空單詞。
解題思路
今天520 , 力扣,我愛你(超大聲)
記錄有多少個大寫字母即可。用C++內置 isupper()來判斷大寫字母。
遍歷字符串,如果當前是大寫字母,就判斷當前大寫字母累計個數是否小於當前下標,如果小於當前小標,則不符合。如 AbCd。
最終判斷是否爲全大寫或只是首字母大寫即可。
AC
class Solution {
public:
bool detectCapitalUse(string word) {
int cnt=0;
for(int i=0;i<word.size();i++)
if(isupper(word[i]) && cnt++<i) return false;
return cnt==word.size() || cnt<=1;
}
};