这是一道来自leetcode第520题:
我们定义,在以下情况时,单词的大写用法是正确的:
全部字母都是大写,比如 "USA" 。
单词中所有字母都不是大写,比如 "leetcode" 。
如果单词不只含有一个字母,只有首字母大写, 比如 "Google" 。
给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。
解题思路
大写字母正确用法只有三种,这三种又分为首字母大写和首字母不大写两类,所以我先判断首字母是否大写。
1、当首字母大写时,遍历字符串,定义一个变量 res 去记录大写字母个数,当res==1 或res==word.length()时,就返回true,否则返回false。
2、当首字母小写时,那么整个字符串都是小写字母,那么在遍历过程中只要出现大写字母,就直接返回false,当遍历完整个字符串都没有出现大写字母时,就直接返回true。
代码实现
class Solution {
public boolean detectCapitalUse(String word) {
//判断首字母大小写
int num = (int) word.charAt(0);
if(65<= num && num<=90){//首字母为大写
int res = 1;
for(int i = 1;i<word.length();i++){
int nums = (int) word.charAt(i);
if(65<= nums && nums<=90){//字符大写时,res就加1
res += 1;
}
}
return res == 1 || res == word.length();
}else{//当首字母为小写时,那么后续字符就一定不能出现大写字母
for(int i = 0;i<word.length();i++){
int nums = (int) word.charAt(i);
if(65<= nums && nums<=90){
break;
}
if(i == word.length()-1){
return true;
}
}
}
return false;
}
}