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 if it has more than one letter, like "Google".
Otherwise, we define that this word doesn't use capitals in a right way.
Example:
Input: "USA" Output: True Input: "FlaG" Output: False
My Solution:
public class Solution { public boolean detectCapitalUse(String word) { String upper = "[A-Z]+"; String lower = "[a-z]+"; String other = "[A-Z]?[a-z]+"; return word.matches(upper) || word.matches(lower) || word.matches(other); } }
Others' Solution:
//1 public boolean detectCapitalUse(String word) { return word.equals(word.toUpperCase()) || word.equals(word.toLowerCase()) || Character.isUpperCase(word.charAt(0)) && word.substring(1).equals(word.substring(1).toLowerCase()); } //2 public boolean detectCapitalUse(String word) { int numUpper = 0; for (int i=0;i<word.length();i++) { if (Character.isUpperCase(word.charAt(i))) numUpper++; } if (numUpper == 0 || numUpper == word.length()) return true; if (numUpper == 1) return Character.isUpperCase(word.charAt(0)); return false; }