LeetCode 520.大文字「力ボタン、愛してる」を検出


タイトルの説明
単語を指定するには、単語の大文字の使用が正しいかどうかを判断する必要があります.
次の場合、単語の大文字の使い方が正しいと定義します.
すべてのアルファベットは大文字で、例えば「USA」です.単語のすべてのアルファベットは大文字ではありません.例えば、「leetcode」です.単語に1つのアルファベットだけでなく、頭文字の大文字だけが含まれている場合は、「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;
    }
};