Detect Capital

题目链接

传送门

题目大意

给一个字符串,判断是否符合要求:

  • 每个字符都是大写,例如”USA”

  • 每个字符都是小写,例如”leetcode”

  • 如果有多个字符的话,除首字母大写外,其他字母都是小写,例如”Google”

解题思路

若字符串只有1个字符,直接返回true;
首先判断第1个字符的大小写,接下来遍历剩下的字符,记录大小写状态;
最后根据题目的要求,对变量进行组合即可。
时间复杂度O(n)。

参考代码

class Solution {
public:
    bool detectCapitalUse(string word) {
        int length = word.length();
        //  只有1个字符,返回true
        if (1 == length) {
            return true;
        }
        // 特判首字母
        bool firstLetterIsUppercase = false; 
        if (word[0] >= 'A' && word[0] <= 'Z') {
            firstLetterIsUppercase = true;
        }

        bool isLowercase = false;
        bool isUppercase = false;
        for (int index = 1; index < length; index ++) {
            if (word[index] >= 'a' && word[index] <= 'z') {
                isLowercase = true;
            } else {
                isUppercase = true;
            }
        }
        // 全是大写
        if (true == firstLetterIsUppercase && false == isLowercase && true == isUppercase) {
            return true;
        }
        // 全是小写
        if (false == firstLetterIsUppercase && true == isLowercase && false == isUppercase) {
            return true;
        }
        // 除首字母大写外,其他都是小写
        if (true == firstLetterIsUppercase && true == isLowercase && false == isUppercase) {
            return true;
        }
        return false;
    }
};

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

© 2018-2019 惜春令 京ICP备18010644号 网站地图