-
发表于 2024.06.23
-
比较简单的题目,但看了下以前的做法比较复杂。其实最简单的做法是先统计大写字母的个数,然后判断是否全大写(大写字母个数为字符串长度)或者全小写(大写字母个数为
0
),或者只有首字母大写(大写字母个数为1
,且是首字母大写)。class Solution: def detectCapitalUse(self, word: str) -> bool: capital_cnt = 0 for ch in word: capital_cnt += ch.isupper() return capital_cnt == len(word) or capital_cnt == 0 or capital_cnt == 1 and word[0].isupper()
以前的做法,其实就是和官解一样的思路:如果字符串长度为
1
,直接返回True
;否则,如果第一个字母为小写,则第二个字母为大写的话就返回False
;最后,从第三个字母开始,如果出现和上一个字母大小写不一致的情况,就返回False
。最后返回True
。class Solution { public: bool detectCapitalUse(string word) { if (word.size() <= 1) return true; //检查首字母为小写但第二字母为大写的情况 if (islower(word[0]) && isupper(word[1])) return false; //后面的字符串交错检查就可以了 for (int i = 2; i < word.size(); ++i) { if (isupper(word[i]) ^ isupper(word[i - 1])) { return false; } } return true; } };
- LC 题目链接
-