版权声明:未经博主同意,禁止转载,联系方式qq2928013321 https://blog.csdn.net/weixin_42130471/article/details/82559253
题目描述:
给定一个单词,你需要判断单词的大写使用是否正确。
我们定义,在以下情况时,单词的大写用法是正确的:
- 全部字母都是大写,比如"USA"。
- 单词中所有字母都不是大写,比如"leetcode"。
- 如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。
否则,我们定义这个单词没有正确使用大写字母。
示例 1:
输入: "USA" 输出: True
示例 2:
输入: "FlaG" 输出: False
注意: 输入是由大写和小写拉丁字母组成的非空单词。
自己写的代码,不会用String代码看起来就是繁琐复杂。。。。:
class Solution {
public boolean detectCapitalUse(String word) {
if(word==null)return false;
if(word.length()==1)return true;
char [] res=word.toCharArray();
System.out.println(res.length);
int flag=1;
for(int i=0;i<res.length;){
if(i==0&&res[i]-'A'>=0&&res[i]-'Z'<=0){//第一个字母大写,后面要么全是大写,要么全是小写
i++;
if(res[i]-'a'>=0&&res[i]-'z'<=0){//第一个字母大写,第二个字母小写,后面字母必须为小写
while(i<res.length){
if(res[i]-'a'<0||res[i]-'z'>0)
return false;
i++;
}
}else{ //第一个字母大写,第二个字母大写,后面字母必须为大写
while(i<res.length){
if(res[i]-'A'<0||res[i]-'Z'>0)
return false;
i++;
}
}
}
else{//第一个字母不是大写,所以所有字母都必须是小写
while(i<res.length){
if(res[i]-'a'<0||res[i]-'z'>0)
return false;
i++;
}
}
}
return true;
}
}
再看看大佬的代码,如此简洁:
public boolean detectCapitalUse(String word) {
// 长度小于2,返回true
if (word.length() < 2)
return true;
// 如果全是大写字母
if (word.toUpperCase().equals(word))
return true;
// 如果第一个字母之后全是小写(第一个字母大小写无所谓)
if (word.substring(1).toLowerCase().
equals(word.substring(1)))
return true;
return false;
}