leetcode解题: Detect Capital (520)

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”.
Otherwise, we define that this word doesn’t use capitals in a right way.
Example 1:

1
2
Input: "USA"
Output: True

Example 2:

1
2
Input: "FlaG"
Output: False

Note: The input will be a non-empty word consisting of uppercase and lowercase latin letters.

解法1:Regex 表达式

感觉这个做法比较像作弊。。
Java

1
2
3
4
5
public class Solution {
public boolean detectCapitalUse(String word) {
return word.matches("[A-Z]+|[a-z]+|[A-Z][a-z]+");
}
}

解法2: 常规解法

常规的想法,可以判断是否都是大写或者都是小写,或者第2个字母开始是否都是小写。
Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Solution {
public boolean detectCapitalUse(String word) {
if (word.equals(word.toUpperCase())) {
return true;
}
if (word.equals(word.toLowerCase())) {
return true;
}
if (word.substring(1).equals(word.substring(1).toLowerCase())) {
return true;
}
return false;
}
}