未分類

Detect Capital

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:

  1. All letters in this word are capitals, like “USA”.
  2. All letters in this word are not capitals, like “leetcode”.
  3. 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.

提示 解題應用
String 規律觀查

Default:

1
2
3
func detectCapitalUse(word string) bool {
}

解答思路:

判斷是否為Capital只存在三種情況,全部大寫、全部小寫或第一個字母大寫其餘小寫,而結論就是如果開頭為大寫,後面可以全部大寫及全部小寫,如果開頭為小寫後頭就一定要全部小寫,得出上述關係後剩下只要藉由ASCII的值就可以輕易找出大小寫及篩掉其它有特殊字元的情況。

程式碼解說:

一開始便以迴圈取出該字串中的每個字母,如果rune值介於97~122(a~z)之間就註記有小寫字母存在,如果rune值介於65~90(A~Z)之間則註記有大寫字母存在,如果有其它的rune值就直接回傳false,接著又如果該字母為第一個字母且為大寫,就要將大寫的註記給取消,因為我們最終的判斷方式是如果大寫與小寫的註記都存在,表示不為capital,而第一個字母大寫其後頭不是全部大小就是全部小寫,此時如果符合上述其中一種情況,在第一個字母之後就會只有其中一種註記存在,至於如果第一個字母是小寫則一樣保留註記,因為後頭只會有小寫的情況,最後檢查完是否有大小寫註記同時存在,如果是就回傳false否則回傳true

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var lower bool
var upper bool
for i, v := range word {
if v >= 97 && v <= 122 {
lower = true
} else if v >= 65 && v <= 90 {
upper = true
} else {
return false
}
if i == 0 && upper {
upper = false
}
}
if lower == true && upper == true {
return false
}
return true

完整程式碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
func detectCapitalUse(word string) bool {
var lower bool
var upper bool
for i, v := range word {
if v >= 97 && v <= 122 {
lower = true
} else if v >= 65 && v <= 90 {
upper = true
} else {
return false
}
if i == 0 && upper {
upper = false
}
}
if lower == true && upper == true {
return false
}
return true
}

總結:

判斷是否為Capital只存在三種情況,全部大寫、全部小寫或第一個字母大寫其餘小寫,而結論就是如果開頭為大寫,後面可以全部大寫及全部小寫,如果開頭為小寫後頭就一定要全部小寫,得出上述關係後剩下只要藉由ASCII的值就可以輕易找出大小寫及篩掉其它有特殊字元的情況。

分享到