BiruLyu
6/28/2017 - 7:36 PM

520. Detect Capital(1st).java

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';
  }
}