我们定义,在以下情况时,单词的大写用法是正确的:
- 全部字母都是大写,比如
"USA"
。
- 单词中所有字母都不是大写,比如
"leetcode"
。
- 如果单词不只含有一个字母,只有首字母大写, 比如
"Google"
。
给你一个字符串 word
。如果大写用法正确,返回 true
;否则,返回 false
。
示例 1:
**输入:** word = "USA"
**输出:** true
示例 2:
**输入:** word = "FlaG"
**输出:** false
提示:
1 <= word.length <= 100
word
由小写和大写英文字母组成
方法一:根据题目要求实现
思路和算法
根据题目要求,若单词的大写用法正确,则需要满足:
根据以上规则,可以整理得到以下更简单的判断规则:
代码
[sol1-Python3]1 2 3 4 5 6 7 8
| class Solution: def detectCapitalUse(self, word: str) -> bool: if len(word) >= 2 and word[0].islower() and word[1].isupper(): return False return all(word[i].islower() == word[1].islower() for i in range(2, len(word)))
|
[sol1-Java]1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class Solution { public boolean detectCapitalUse(String word) { if (word.length() >= 2 && Character.isLowerCase(word.charAt(0)) && Character.isUpperCase(word.charAt(1))) { return false; } for (int i = 2; i < word.length(); ++i) { if (Character.isLowerCase(word.charAt(i)) ^ Character.isLowerCase(word.charAt(1))) { return false; } } return true; } }
|
[sol1-C#]1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class Solution { public bool DetectCapitalUse(string word) { if (word.Length >= 2 && char.IsLower(word[0]) && char.IsUpper(word[1])) { return false; } for (int i = 2; i < word.Length; ++i) { if (char.IsLower(word[i]) ^ char.IsLower(word[1])) { return false; } } return true; } }
|
[sol1-C++]1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Solution { public: bool detectCapitalUse(string word) { if (word.size() >= 2 && islower(word[0]) && isupper(word[1])) { return false; } for (int i = 2; i < word.size(); ++i) { if (islower(word[i]) ^ islower(word[1])) { return false; } } return true; } };
|
[sol1-Golang]1 2 3 4 5 6 7 8 9 10 11 12 13 14
| func detectCapitalUse(word string) bool { if len(word) >= 2 && unicode.IsLower(rune(word[0])) && unicode.IsUpper(rune(word[1])) { return false }
for i := 2; i < len(word); i++ { if unicode.IsLower(rune(word[i])) != unicode.IsLower(rune(word[1])) { return false } } return true }
|
[sol1-JavaScript]1 2 3 4 5 6 7 8 9 10 11 12 13 14
| var detectCapitalUse = function(word) { if (word.length >= 2 && word[0] === word[0].toLowerCase() && word[1] === word[1].toUpperCase()) { return false; } for (let i = 2; i < word.length; ++i) { if (word[i] === word[i].toLowerCase() ^ word[1] === word[1].toLowerCase()) { return false; } } return true; };
|
复杂度分析