教日月换新天。为有牺牲多壮志,敢

[Swift]LeetCode520. 检测大写字母 | Detect Capital

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9810856.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

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:

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. 全部字母都是大写,比如"USA"。
  2. 单词中所有字母都不是大写,比如"leetcode"。
  3. 如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。

否则,我们定义这个单词没有正确使用大写字母。

示例 1:

输入: "USA"
输出: True

示例 2:

输入: "FlaG"
输出: False

注意: 输入是由大写和小写拉丁字母组成的非空单词。


 12ms

复制代码
 1 class Solution {
 2     func detectCapitalUse(_ word: String) -> Bool {
 3         if word == nil || word == "" {return false}
 4         //大写
 5         let up:String = word.uppercased()
 6         //小写
 7         let low:String = word.lowercased()
 8         //首字母大写
 9         let str = word.capitalized
10         if word == up || word == low || word == str
11         {
12             return true
13         }
14         return false
15     }
16 }
复制代码

8ms

复制代码
 1 class Solution {
 2     func detectCapitalUse(_ word: String) -> Bool {
 3         if (word.count <= 1) {
 4             return true
 5         }
 6         
 7         var index = word.startIndex
 8         let end = word.index(before: word.endIndex)
 9         
10         if (word[index] > "Z") {
11             while (index < end) {
12                 word.formIndex(after: &index)
13                 if (word[index] < "a") {
14                     return false
15                 }
16             }
17         } else {
18             word.formIndex(after: &index)
19             if (word[index] > "Z") {
20                 while (index < end) {
21                     word.formIndex(after: &index)
22                     if (word[index] < "a") {
23                         return false
24                     }
25                 }
26             } else {
27                 while (index < end) {
28                     word.formIndex(after: &index)
29                     if (word[index] > "Z") {
30                         return false
31                     }
32                 }
33             }
34         }
35         
36         return true
37     }
38 }
复制代码

16ms

复制代码
 1 class Solution {
 2     func detectCapitalUse(_ word: String) -> Bool {
 3         return word.isProper()
 4     }
 5 }
 6 
 7 extension Character {
 8     func isUppercased() -> Bool {
 9         let stringVal = String(self)
10         return stringVal.uppercased() == stringVal
11     }
12 }
13 
14 extension String {
15     func isProper() -> Bool {
16         guard let first = self.first else { return false }
17         let remaining = self.dropFirst()
18         let remainingIsLower = remaining.lowercased() == remaining
19         let remainingIsUpper = remaining.uppercased() == remaining
20         return first.isUppercased() ? remainingIsUpper || remainingIsLower : remainingIsLower
21     }
22 }
复制代码

20ms

复制代码
 1 class Solution {
 2     func detectCapitalUse(_ word: String) -> Bool {
 3         var allCaps = true
 4         var allNotCaps = true
 5         var firstCaps = true
 6         
 7         for i in 0..<word.count {
 8             let char = String(word[word.index(word.startIndex, offsetBy: i)])
 9             allCaps = allCaps && char == char.capitalized
10             allNotCaps = allNotCaps && char != char.capitalized
11             firstCaps = firstCaps && (i == 0 && char == char.capitalized) || firstCaps && (i != 0 && char != char.capitalized) 
12         }
13         
14         return allCaps || allNotCaps || firstCaps
15     }
16 }
复制代码

20ms

复制代码
 1 class Solution {
 2     func detectCapitalUse(_ word: String) -> Bool {
 3         let words = word.split(separator: " ")
 4         for word in words {
 5             var firstCapital = false
 6             var secondCapital = false
 7             for (index, scalar) in word.unicodeScalars.enumerated() {
 8                 let value = scalar.value
 9                 if index == 0 {
10                     if value >= 65 && value <= 90 {
11                         firstCapital = true
12                     }
13                 } else if index == 1 {
14                     if value >= 65 && value <= 90 {
15                         if !firstCapital {
16                             return false
17                         }
18 
19                         secondCapital = true
20                     }
21                 } else {
22                     if value >= 65 && value <= 90 {
23                         if !secondCapital {
24                             return false
25                         }
26                     } else {
27                         if secondCapital {
28                             return false
29                         }
30                     }
31                 }
32             }
33         }
34 
35         return true
36     }
37 }
复制代码

24ms

复制代码
 1 class Solution {
 2     func detectCapitalUse(_ word: String) -> Bool {
 3         let lower = word.lowercased()
 4         let upper = word.uppercased()
 5         let initials = upper[word.startIndex]
 6         let camel = lower.replacingCharacters(in: lower.startIndex..<lower.index(after: lower.startIndex), with: String(initials))
 7         
 8         
 9         return word == lower ||
10         word == upper ||
11         word == camel
12     }
13 }
复制代码

28ms

复制代码
 1 class Solution {
 2     func detectCapitalUse(_ word: String) -> Bool {
 3         var i = 0
 4         var first = 0
 5         var flag = false
 6         var temp = true
 7         if word.count == 1 {
 8             return true
 9         }
10         
11         for w in word.unicodeScalars {
12             
13             var num = 0
14             
15             if i == 0 {
16                 first = Int(w.value)
17             }else{
18                 num = Int(w.value)
19             }
20             
21             if first >= 97 && first <= 122 {
22                 if num >= 97 && num <= 122 {
23                     flag = true
24                 }else if num >= 65 && num <= 90 {
25                     return false
26                 }
27             }else{
28                 
29                 if num >= 97 && num <= 122 {
30                     flag = true
31                 }else if num >= 65 && num <= 90 {
32                     temp = false
33                 }
34             }
35             
36             i += 1
37         }
38         
39         if flag == false && temp == false {
40             return true
41         }
42         
43         return flag&&temp
44     }
45 }
复制代码

36ms

1 class Solution {
2     func detectCapitalUse(_ word: String) -> Bool {
3         return word == word.capitalized || word == word.uppercased() || word == word.lowercased()
4         
5     }
6 }

 

posted @   为敢技术  阅读(577)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示
哥伦布
09:09发布
哥伦布
09:09发布
3°
多云
东南风
3级
空气质量
相对湿度
47%
今天
中雨
3°/15°
周三
中雨
3°/13°
周四
小雪
-1°/6°