Topic
- String
Description
https://leetcode.com/problems/detect-capital/
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, like
"Google"
.
Given a string word
, return true
if the usage of capitals in it is right.
Example 1:
Input: word = "USA"
Output: true
Example 2:
Input: word = "FlaG"
Output: false
Constraints:
- 1 <= word.length <= 100
word
consists of lowercase and uppercase English letters.
Analysis
方法一:字符统计
方法二:正则表达式
Submission
public class DetectCapital {
public boolean detectCapitalUse(String word) {
int capitalCount = 0, notCapitalCount = 0;
boolean firstLetterCapital = Character.isUpperCase(word.charAt(0));
for(int i = 0; i < word.length(); i++) {
if(Character.isUpperCase(word.charAt(i))) {
capitalCount++;
}else {
notCapitalCount++;
}
}
return firstLetterCapital && notCapitalCount == word.length() - 1 //
|| notCapitalCount == word.length()//
|| capitalCount == word.length();
}
public boolean detectCapitalUse2(String word) {
return word.matches("[A-Z]*|[A-Z]?[a-z]*");
}
}
Test
public class DetectCapitalTest {
@Test
public void test() {
DetectCapital obj = new DetectCapital();
assertTrue(obj.detectCapitalUse("USA"));
assertTrue(obj.detectCapitalUse("leetcode"));
assertTrue(obj.detectCapitalUse("Google"));
assertTrue(obj.detectCapitalUse("g"));
assertFalse(obj.detectCapitalUse("FlaG"));
assertTrue(obj.detectCapitalUse2("USA"));
assertTrue(obj.detectCapitalUse2("leetcode"));
assertTrue(obj.detectCapitalUse2("Google"));
assertTrue(obj.detectCapitalUse2("g"));
assertFalse(obj.detectCapitalUse2("FlaG"));
}
}