题目描述
我们定义,在以下情况时,单词的大写用法是正确的:
-
全部字母都是大写,比如 "USA" 。
-
单词中所有字母都不是大写,比如 "leetcode" 。
-
如果单词不只含有一个字母,只有首字母大写, 比如 "Google" 。
-
给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。
示例 1:
输入: word = "USA"
输出: true
示例 2:
输入: word = "FlaG"
输出: false
解析分析
通过题目描述,我们可以看出,满足条件的的单词需要具备以下特征
- 1.单词的所有字母全是大写
- 2.单词的所有字母全是小写
- 3.单词的第一个字母是大写,后续所有字母全是小写。
参考代码
public boolean detectCapitalUse(String word) {
char[] chars = word.toCharArray();
//从第二个字母开始,遍历所有字母。
for (int i = 1; i < chars.length; i++) {
// [全是小写的单词]前一个字母和当前字母都是小写。
if (isLowerCase(chars[i - 1]) && isLowerCase(chars[i])) {
continue;
}
// [全是大写的单词]前一个字母和当前字母都是大写。
if (!isLowerCase(chars[i - 1]) && !isLowerCase(chars[i])) {
continue;
}
// [首字符大写的单词],第一个字母是大写,剩下字母全是小写。
if (!isLowerCase(chars[i - 1]) && isLowerCase(chars[i]) && i == 1) {
continue;
}
//如果当前字符不符合以上要求
return false;
}
return true;
}
//判断字母是否是小写
public boolean isLowerCase(char str) {
return str >= 'a' && str <= 'z';
}