Given a word, you need to judge whether the usage of capitals in it is right or not.
We define the usage of capitals in a word to be right when one of the following cases holds:
- All letters in this word are capitals, like "USA".
- All letters in this word are not capitals, like "leetcode".
- Only the first letter in this word is capital if it has more than one letter, like "Google".
Example 1:
Input: "USA" Output: True
Example 2:
Input: "FlaG" Output: False
Note: The input will be a non-empty word consisting of uppercase and lowercase latin letters.
这个很简单。public class Detect_Capital_520 {
public boolean ifAllUpperCase(char[] a,int begin,int length){
for(int i=begin;i<length;i++){
if(a[i]<'A'||a[i]>'Z'){
return false;
}
}
return true;
}
public boolean ifAllLowerCase(char[] a,int begin,int length){
for(int i=begin;i<length;i++){
if(a[i]<'a'||a[i]>'z'){
return false;
}
}
return true;
}
public boolean detectCapitalUse(String word) {
char[] a=word.toCharArray();
int length=a.length;
if(a[0]>='A'&&a[0]<='Z'){
return ifAllUpperCase(a, 1, length)||ifAllLowerCase(a, 1, length);
}
else if(a[0]>='a'&&a[0]<='z'){
return ifAllLowerCase(a, 1, length);
}
else{
return false;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Detect_Capital_520 d=new Detect_Capital_520();
System.out.println(d.detectCapitalUse("flaG"));
}
}
大神直接用正则:public boolean detectCapitalUse(String word) {
return word.matches("[A-Z]+|[a-z]+|[A-Z][a-z]+");
}
或者直接判断大写字母的个数,大写字母有0个或者string.length个都返回true,还有一种情况是大写字母有1个,同时首字母是大写字母。public boolean detectCapitalUse(String word) {
int numUpper = 0;
for (int i=0;i<word.length();i++)
if (Character.isUpperCase(word.charAt(i))) numUpper++;
if (numUpper == 1) return Character.isUpperCase(word.charAt(0));
return numUpper == 0 || numUpper == word.length();
}