题目描述:
给定一个单词,你需要判断单词的大写使用是否正确。
我们定义,在以下情况时,单词的大写用法是正确的:
1. 全部字母都是大写,比如"USA"。
1. 单词中所有字母都不是大写,比如"leetcode"。
1. 如果单词不只含有一个字母,只有首字母大写, 比如 “Google”。
否则,我们定义这个单词没有正确使用大写字母。
示例 1:
输入: “USA”
输出: True
示例 2:
输入: “FlaG”
输出: False
解题思路:
方法一:笨方法
根据题目分析
先对首字母进行判断
如果首字母是大写:
后面全是小写,返回true flag=word.length()-1(减1是去掉首字母)
后面全是大写,返回true flag=0
后面有大有小,返回false flag<word.length()-1
如果首字母是小写:
后面全是小写,返回true flag=worlg.length()
否则,返回false
具体实现:先将字符串转化为数组 word.toCharArray()
再判断首字母
再对字符串数组进行遍历,判断每个数组元素是否为小写,如果是小写,使用int flag进行累加
class Solution {
public boolean detectCapitalUse(String word) {
if(word==null || word=="") return false;
if(word.length()==0) return true;
char ch[]=word.toCharArray();
int flag=0;
if(ch[0]>='A'&& ch[0]<='Z'){ //如果是以大写字母开头的字符串
if(word.length()==1) return true;
for(int i=1;i<word.length();i++){
if(ch[i]>='a' && ch[i]<='z'){
++flag;
}
}
if(flag==word.length()-1||flag==0) return true;
}
else{//是以小写字母开头的字符串
for(int i=0;i<word.length();i++){
if(ch[i]>='a' && ch[i]<='z'){
++flag;
}
}
if(flag==word.length()) return true;
}
return false;
}
}