LeetCode: 520. 检测大写字母

85 阅读1分钟

题目

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

  • 全部字母都是大写,比如 "USA" 。
  • 单词中所有字母都不是大写,比如 "leetcode" 。
  • 如果单词不只含有一个字母,只有首字母大写, 比如 "Google" 。

给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。

思路

分条件讨论.

注意如果 word 的长度为 1 则返回 true;

代码

class Solution {
    public boolean detectCapitalUse(String word) {
        char[] chars = word.toCharArray();
        int n = chars.length;
        char first = chars[0];
        if (n == 1) {
            return true;
        }
        boolean lowerCase = Character.isLowerCase(first);
        //首字母是小写情况
        if (lowerCase) {
            for (char c : chars) {
                if (Character.isUpperCase(c)) return false;
            }
            return true;
        }
        //如果不是小写情况
        char second = chars[1];
        boolean secondType = Character.isLowerCase(second);
        if (secondType) {
            for (int i = 1; i < n; i++) {
                if (Character.isUpperCase(chars[i])) return false;
            }
            return true;
        }
        for (char c : chars) {
            if (Character.isLowerCase(c)) return false;
        }
        return true;
    }
}

题解

三叶姐题解: leetcode.cn/problems/de…

看完题解之后感觉自己好蠢......