*LeetCode--Detect Capital
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 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.
自己的方法,一个一个字符的判断(要注意边界条件)
class Solution { public boolean detectCapitalUse(String word) { if(word == null || word.length() == 0) return false; if(word.length() == 1) return true; boolean flag = (word.charAt(0) >= 'A' && word.charAt(0) <= 'Z') ? true : false; if(flag){ boolean upper = (word.charAt(1) >= 'A' && word.charAt(1) <= 'Z' && flag) ? true : false; for(int i = 1; i < word.length(); i++){ if(upper && word.charAt(i) >= 'a' && word.charAt(i) <= 'z') return false; if(!upper && word.charAt(i) >= 'A' && word.charAt(i) <= 'Z') return false; } }else{ for(int i = 1; i < word.length(); i++){ if(word.charAt(i) >= 'A' && word.charAt(i) <= 'Z') return false; } } return true; } }
如 mL, FFFFFFFFFFFFf
别人的方法:直接调用线程的方法
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()); } A slightly more verbose, but more efficient solution: 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 == 1) return Character.isUpperCase(word.charAt(0)); return numUpper == 0 || numUpper == word.length(); }