1、题目描述
我们定义,在以下情况时,单词的大写用法是正确的:
全部字母都是大写,比如 "USA" 。
单词中所有字母都不是大写,比如 "leetcode" 。
如果单词不只含有一个字母,只有首字母大写, 比如 "Google" 。
给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。
2、算法分析
知识补充:判断一个字符是否为大写字母Character.isUpperCase(char c):判断字符是否为大写字母;大写为true;小写为false;
先将字符串转化为字符数组,遍历字符数组,判断每一个字符是否为大写字母。是的话,计数count++记录大写字母的个数。
如果count == 0,说明字符串中都是小写字母;
如果count == arr.length,说明字符串中都是大写字母;
如果count == 1 && Character.isUpperCase(arr[0]),说明字符串中第一个字符为大写字母,其余的都是小写字母;
符合以下3种情况返回true:
①字符串中的字符全是大写字母
②字符串中的字符全是小写字母
③字符串中的第一个字符是大写字母,其余的都是小写字母
3、代码实现
class Solution {
public boolean detectCapitalUse(String word) {
if(word == null || word.length() == 0){
return false;
}
int count = 0;
char[] arr = word.toCharArray();
for(int i = 0;i < arr.length;i++){
if(Character.isUpperCase(arr[i])){
count++;
}
}
if(count == 0){
return true;
}
if(count == arr.length){
return true;
}
if(count == 1 && Character.isUpperCase(arr[0])){
return true;
}
return false;
}
}