Detect Capital
Leetcode Easy
Problem
Given a word, you need to judge whether the usage of capitals in it is right or not.
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”.
Otherwise, we define that this word doesn’t use capitals in a right way.
Example 1:
Input: "USA"
Output: True
Example 2:
Input: "FlaG"
Output: False
Note: The input will be a non-empty word consisting of uppercase and lowercase latin letters.
Solution
class Solution {
public boolean detectCapitalUse(String word) {
// Special case if there is 1 or 0 letters
if (word.length() < 2)
return true;
boolean isCap = word.charAt(1) < 97;
// If the format is aAAA
if (isCap && word.charAt(0) >= 97)
return false;
// Check to make sure that all of the letters match casing
for (int i = 2; i < word.length(); i++)
if ((word.charAt(i) < 97) != isCap)
return false;
return true;
}
}
Why it works
I used the fact that any letter below the ASCII value of 97 is uppercase, and anything above or equal to is lowercase (as ‘a’ is ASCII value 97).