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


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

    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 }
  • 相关阅读:
    C#后台去除字符串最后一个字符
    C#后台验证含0的正整数
    jQuery提交表单的几种方式
    C#后台获取当前时间并格式化
    获取EasyUI日期输入框的值
    jQuery将字符串转换为数字
    JQ和JS获取span标签的内容
    正则
    json 拖拽
    event事件对象
  • 原文地址:https://www.cnblogs.com/strengthen/p/9810856.html
Copyright © 2020-2023  润新知