Leetcode-520-检测大写字母

204 阅读1分钟

题目描述

我们定义,在以下情况时,单词的大写用法是正确的:

  • 全部字母都是大写,比如 "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';
}