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.
这里写这道题不是因为这题有多难,而是这题的思路值得记录,事实上,在平时的开发过程中,具体的需求有时候并不一定需要用到复杂的算法或者过度思考,抓住问题的本质才是关键,并且有时候根据需求我们可以‘耿直’些。这道题实际上可以归纳为3种情况:
1)所有字母都是大写
2)左右字母都是小写
3)第一个字母大写其他小写
当且仅当满足这3种情况的时候返回true,否则返回false。因此我们只需要遍历string然后找出所有字母的大小写情况即可。
public boolean detectCapitalUse(String word) {
int count = 0;
char [] chars = word.toCharArray();
for (char c : chars) {
if (Character.isUpperCase(c)) count++;
}
return ((count == 0 || count == chars.length) || (count == 1 && Character.isUpperCase(word.charAt(0))));
}