Given a word, you need to judge whether the usage of capitals in it is right or not.
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 if it has more than one letter, like "Google".
Otherwise, we define that this word doesn't use capitals in a right way.
Example 1:
Input: "USA" Output: True
Example 2:
Input: "FlaG" Output: False
思路一:
检查输入的单词是否符合大小写规则。符合规则的情况有:全部大写,全部小写,首字母大写。设置计数器count统计大写字母的个数,则三种符合规则的情况可以表示为:count=单词长度,count=0,及count=1且首字母大写。
Code:
class Solution {
public:
bool detectCapitalUse(string word) {
int count=0;
for(int i=0; i<word.size();i++){
if(word[i]>='A'&&word[i]<='Z') count++;
}
if(count==0||count==word.size()) return true;
else if(count==1&&word[0]<='Z') return true;
else return false;
}
};
思路二:
使用正则表达式。注:regex_match()是正则表达式匹配的函数。 +:1 or more;*:0 or more。Code:
class Solution {
public:
bool detectCapitalUse(string word) {
return regex_match(word, regex("[A-Z]+|[a-z]+|[A-Z][a-z]*"));
}
};