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".
Example 1:
Input: "USA" Output: True
Example 2:
Input: "FlaG" Output: False
Note:The input will be a non-empty word consisting of uppercase and lowercase latin letters.
思路:
1.分类处理,第一个若为大写,从第二个开始,每一个大小写需与第二个一致;若第一个为小写,全部为小写;
2.除去第一个,相邻的大小写一致
代码1:
class Solution {
public:
bool detectCapitalUse(string word) {
if(word.size()==1) {return true;}
if(isupper(word[0])){
if(isupper(word[1])){
int i = 1;
while(i<word.size()){
if(!isupper(word[i])) {return false;}
i++;
}
}
else{
int i = 1;
while(i<word.size()){
if(isupper(word[i])) {return false;}
i++;
}
}
}
else{
int i = 1;
while(i<word.size()){
if(isupper(word[i])) {return false;}
i++;
}
}
return true;
}
};
代码2:
class Solution {
public:
bool detectCapitalUse(string word) {
if(word.size()<=1){return true;}
if(isupper(word[0])){
for(int i=1;i<word.size();i++){
if(isupper(word[i])!=isupper(word[1])){return false;}
}
}
else{
for(int i=1;i<word.size();i++){
if(isupper(word[i])!=isupper(word[0])){return false;}
}
}
return true;
}
};
代码3:
class Solution {
public:
bool detectCapitalUse(string word) {
for(int i = 1; i < word.size(); i++)
{
if(isupper(word[i]) && islower(word[i-1]))
return false;
if(islower(word[i]) && isupper(word[i-1]) && i!=1)
return false;
}
return true;
}
};
直接不管第一个字母的大小写