520. Detect Capital
We define the usage of capitals in a word to be right when one of the following cases holds:
All letters in this word are capitals, like “USA”.
All letters in this word are not capitals, like “leetcode”.
Only the first letter in this word is capital, like “Google”.
Given a string word, return true if the usage of capitals in it is right.
Example 1:
Input: word = “USA”
Output: true
Example 2:
Input: word = “FlaG”
Output: false
Constraints:
1 <= word.length <= 100
word consists of lowercase and uppercase English letters.
solution1
class Solution {
public:
bool detectCapitalUse(string word) {
// 若第 1 个字母为小写,则需额外判断第 2 个字母是否为小写
if (word.size() >= 2 && islower(word[0]) && isupper(word[1])) {
return false;
}
// 无论第 1 个字母是否大写,其他字母必须与第 2 个字母的大小写相同
for (int i = 2; i < word.size(); ++i) {
if (islower(word[i]) ^ islower(word[1])) {
return false;
}
}
return true;
}
};
作者:LeetCode-Solution
链接:https://leetcode.cn/problems/detect-capital/solution/jian-ce-da-xie-zi-mu-by-leetcode-solutio-449z/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
#solution2
遍历
int count = 0;
// 遍历,计数
for (int i = 0; i < word.length(); i++) {
count += word.charAt(i) < 91 ? 1 : 0;
}
// 三种合法情况:全大写 || 全小写 || (首字母大写 && 后面均小写)
return count == word.length() || count == 0 || (word.charAt(0) < 91 && count == 1);