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
Note: The input will be a non-empty word consisting of uppercase and lowercase latin letters.
题意:给你一个字符串,判断其是否符合规范
这是我的代码。感觉有点蠢。
class Solution { public: bool detectCapitalUse(string word) { if(word[0] >= 65 && word[0] <= 90){ int n = 0; int m = 0; for(int i = 1; i < word.size(); i++){ if(word[i] <= 90) m = 1; else n = 1; } if(n + m > 1) return false; } else{ for(int i = 1; i < word.size(); i++){ if(word[i] < 'a') return false; } } return true; } };
还有一个是C++正则表达式做出来的。
class Solution { public: bool detectCapitalUse(string word) { return regex_match(word, regex("[A-Z]+|[a-z]+|[A-Z][a-z]*")); } };
Discuss 网友Python答案:
When adding a boolean in python it is changed to a 1 or 0. You can loop through each character and sum the amount of upper case letters seen.
def detectCapitalUse(self, word): total = 0 for c in word: total += c.isupper() return total == 0 or len(word) == total or (total == 1 and word[0].isupper()) # return all_lowercase or all_uppercase or only_the_first_is_upper