520. Detect Capital

1662 단어
내 코드는 바로 읽기와 이해인데 비교적 완비되어 있어 tolerant String이 규범에 맞지 않을 수도 있다.
    public boolean detectCapitalUse(String word) {
        if (word == null || word.length() <= 1) {
            return true;
        }
        for (int i = 0; i < word.length(); i++) {
            //     
            if (isLowerCaseLetter(word.charAt(0))) {
                if (!isLowerCaseLetter(word.charAt(i))) {
                    return false;
                }
            }
            //     
            else if (isUpperCaseLetter(word.charAt(0))) {
                if (isUpperCaseLetter(word.charAt(1))) {
                    if (i > 1 && !isUpperCaseLetter(word.charAt(i))) {
                        return false;
                    }
                } else if (isLowerCaseLetter(word.charAt(1))) {
                    if (i > 1 && !isLowerCaseLetter(word.charAt(i))) {
                        return false;
                    }
                }
            } else {
                return false;
            }
        }
        return true;
    }

    private boolean isLowerCaseLetter(char c) {
        return c <= 'z' && c >= 'a';
    }

    private boolean isUpperCaseLetter(char c) {
        return c <= 'Z' && c >= 'A';
    }


깔끔한 코드:
public class Solution {
    public boolean detectCapitalUse(String word) {
        int cnt = 0;
        for(char c: word.toCharArray()) if('Z' - c >= 0) cnt++;
        return ((cnt==0 || cnt==word.length()) || (cnt==1 && 'Z' - word.charAt(0)>=0));
    }
}
  • 좋은 웹페이지 즐겨찾기