# 520. Detect Capital

## Description

We define the usage of capitals in a word to be right when one of the following cases holds:

• All letters in this word are capitals, like "USA".
• All letters in this word are not capitals, like "leetcode".
• Only the first letter in this word is capital, like "Google".

Given a string word, return true if the usage of capitals in it is right.

Example 1:

Input: word = "USA"
Output: true


Example 2:

Input: word = "FlaG"
Output: false


Constraints:

• 1 <= word.length <= 100
• word consists of lowercase and uppercase English letters.

## Solutions

• class Solution {
public boolean detectCapitalUse(String word) {
int cnt = 0;
for (char c : word.toCharArray()) {
if (Character.isUpperCase(c)) {
++cnt;
}
}
return cnt == 0 || cnt == word.length()
|| (cnt == 1 && Character.isUpperCase(word.charAt(0)));
}
}

• class Solution {
public:
bool detectCapitalUse(string word) {
int cnt = 0;
for (char c : word)
if (isupper(c)) ++cnt;
return cnt == 0 || cnt == word.size() || (cnt == 1 && isupper(word[0]));
}
};

• class Solution:
def detectCapitalUse(self, word: str) -> bool:
cnt = 0
for c in word:
if c.isupper():
cnt += 1
return cnt == 0 or cnt == len(word) or (cnt == 1 and word[0].isupper())


• func detectCapitalUse(word string) bool {
cnt := 0
for _, c := range word {
if unicode.IsUpper(c) {
cnt++
}
}
return cnt == 0 || cnt == len(word) || (cnt == 1 && unicode.IsUpper(rune(word[0])))
}

• function detectCapitalUse(word: string): boolean {
const cnt = word.split('').reduce((acc, c) => acc + (c === c.toUpperCase() ? 1 : 0), 0);
return cnt === 0 || cnt === word.length || (cnt === 1 && word[0] === word[0].toUpperCase());
}