public class Solution {
public boolean detectCapitalUse(String word) {
if (word == null ) return false;
int len = word.length();
int count = 0;
for (int i = 0; i < len; i++) {
if (Character.isUpperCase(word.charAt(i))) count++;
}
if (count == 1) return Character.isUpperCase(word.charAt(0));
return count == 0 || count == len;
}
}
public class Solution {
public boolean detectCapitalUse(String word) {
return word.matches("[a-z]+|[A-Z][a-z]*|[A-Z]+");
}
}
public class Solution {
public boolean detectCapitalUse(String word) {
char[] letters = word.toCharArray();
if (isLower(letters[0])) {
// all must be lower
for (int i = 1; i < letters.length; i++) {
if (!isLower(letters[i])) {
return false;
}
}
return true;
}
if (letters.length == 1) {
return true;
}
if (isLower(letters[1])) {
// the rest must be lower
for (int i = 2; i < letters.length; i++) {
if (!isLower(letters[i])) {
return false;
}
}
return true;
} else {
// the rest must be upper
for (int i = 2; i < letters.length; i++) {
if (isLower(letters[i])) {
return false;
}
}
return true;
}
}
private boolean isLower(char c) {
return c >= 'a' && c <= 'z';
}
}