题目
我们定义,在以下情况时,单词的大写用法是正确的:
全部字母都是大写,比如 "USA" 。
单词中所有字母都不是大写,比如 "leetcode" 。
如果单词不只含有一个字母,只有首字母大写, 比如 "Google" 。
给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。
示例 1:
输入:word = "USA" 输出:true
示例 2:
输入:word = "FlaG" 输出:false
思路
先判断字符串的首字母时大写还是小写```word.charAt(0) >='a'```。
- 小写情况就继续判断剩下字符是否都是小写。
- 大写情况就继续判断第二个字符是大写还是小写```word.charAt(1) >='a'```。
第二个字符是大写,则需要剩下的字符是大写,第二个字符小写则剩下的字符都需要是小写。
复杂度
- 时间复杂度: O(n)
- 空间复杂度: O(1)
Code
public boolean detectCapitalUse(String word) {
if (word.charAt(0) >='a') {//小写 如:leetcode
for (int i = 0; i < word.length(); i++) {
if (word.charAt(i) < 'a') {
return false;
}
}
} else {//大写
for (int i = 2; i < word.length(); i++) {
if (word.charAt(1)>='a'){//如:Google
if (word.charAt(i) < 'a') {
return false;
}
}else {//如:USA
if (word.charAt(i) >= 'a') {
return false;
}
}
}
}
return true;
}
执行结果
![](https://img-blog.csdnimg.cn/img_convert/cfebc01b811e9a6ee43fbcb872717c60.png)