JZX轻语:简
LeetCode 520 - 检测大写字母
发表于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;
}
};