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:
Input: "USA" Output: TrueExample 2:
Input: "FlaG" Output: FalseNote: The input will be a non-empty word consisting of uppercase and lowercase latin letters.
很简单的一道题,渣渣如我只能暴力求解:
1.brutal force/命令式编程
1 public class Solution { 2 public boolean detectCapitalUse(String word) { 3 char[] value = word.toCharArray(); 4 if(value.length == 1 || word == null) { 5 return true; 6 } 7 boolean secIsUC = false; 8 if(Character.isLowerCase(value[0])) { 9 for(int i=1; i<value.length; i++) { 10 if(Character.isUpperCase(value[i])) { 11 return false; 12 } 13 } 14 } else { 15 secIsUC = Character.isUpperCase(value[1]) ? true : false; 16 if(secIsUC) { 17 for(int i=2; i<value.length; i++) { 18 if(Character.isLowerCase(value[i])) { 19 return false; 20 } 21 } 22 } else { 23 for(int i=2; i<value.length; i++) { 24 if(Character.isUpperCase(value[i])) { 25 return false; 26 } 27 } 28 } 29 } 30 return true; 31 } 32 }
2.暴力求解升级版
1 public class Solution { 2 public boolean detectCapitalUse(String word) { 3 int cnt = 0; 4 for(char c: word.toCharArray()) if(‘Z‘ - c >= 0) cnt++; 5 return ((cnt==0 || cnt==word.length()) || (cnt==1 && ‘Z‘ - word.charAt(0)>=0)); 6 } 7 }
3.声明式编程
1 public boolean detectCapitalUse(String word) { 2 if (word.length() < 2) return true; 3 if (word.toUpperCase().equals(word)) return true; 4 if (word.substring(1).toLowerCase().equals(word.substring(1))) return true; 5 return false; 6 }
4.RegEx
1 public boolean detectCapitalUse(String word) { 2 return word.matches("[A-Z]+|[a-z]+|[A-Z][a-z]+"); 3 }
时间: 2024-10-12 02:48:40