字符串——Detect Capital
Posted ADong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串——Detect Capital相关的知识,希望对你有一定的参考价值。
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: True
Example 2:
Input: "FlaG" Output: False
Note: 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 }
以上是关于字符串——Detect Capital的主要内容,如果未能解决你的问题,请参考以下文章