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:
|
|
Example 2:
|
|
Note:
The input will be a non-empty word consisting of uppercase and lowercase latin letters.
提示 | 解題應用 |
---|---|
String | 規律觀查 |
Default:
|
|
解答思路:
判斷是否為Capital只存在三種情況,全部大寫、全部小寫或第一個字母大寫其餘小寫,而結論就是如果開頭為大寫,後面可以全部大寫及全部小寫,如果開頭為小寫後頭就一定要全部小寫,得出上述關係後剩下只要藉由ASCII的值就可以輕易找出大小寫及篩掉其它有特殊字元的情況。
程式碼解說:
一開始便以迴圈取出該字串中的每個字母,如果rune值介於97~122(a~z)之間就註記有小寫字母存在,如果rune值介於65~90(A~Z)之間則註記有大寫字母存在,如果有其它的rune值就直接回傳false,接著又如果該字母為第一個字母且為大寫,就要將大寫的註記給取消,因為我們最終的判斷方式是如果大寫與小寫的註記都存在,表示不為capital,而第一個字母大寫其後頭不是全部大小就是全部小寫,此時如果符合上述其中一種情況,在第一個字母之後就會只有其中一種註記存在,至於如果第一個字母是小寫則一樣保留註記,因為後頭只會有小寫的情況,最後檢查完是否有大小寫註記同時存在,如果是就回傳false否則回傳true
|
|
完整程式碼:
|
|
總結:
判斷是否為Capital只存在三種情況,全部大寫、全部小寫或第一個字母大寫其餘小寫,而結論就是如果開頭為大寫,後面可以全部大寫及全部小寫,如果開頭為小寫後頭就一定要全部小寫,得出上述關係後剩下只要藉由ASCII的值就可以輕易找出大小寫及篩掉其它有特殊字元的情況。