125. 验证回文串

一、题目原型:

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。

二、示例剖析:

 示例 1:
 输入: "A man, a plan, a canal: Panama"
 输出: true
 
 示例 2:
 输入: "race a car"
 输出: false

三、解题思路:

回文串:就是从左边数到右边,和从右边数到左边是一样的。
比如:ama
题目中说只考虑字母和数字字符,不分大小写

abcdefghijklmnopqrstuvwxyz   97~122 小写字母
ABCDEFGHIJKLMNOPQRSTUVWXYZ   65~90 大写字母
0123456789                   48~57 数字

所以我们只需要判定这一些字符的ASCII码

func isPalindrome(_ s: String) -> Bool {
    
    if s.count == 0 {
        return true
    }
    
    var chars = s.cString(using: String.Encoding.utf8)
    let count = (chars?.count)!
    var mutChars: [Int8] = []
    for i in 0..<count {
        
        if chars![i] >= 97 && chars![i] <= 122 {
            mutChars.append(chars![i])
        }else if chars![i] >= 65 && chars![i] <= 90 {
            // 将大写字母 转小写
            chars![i] = chars![i] + 32
            mutChars.append(chars![i])
        }else if chars![i] >= 48 && chars![i] <= 57 {
            mutChars.append(chars![i])
        }
    }
    
    let mutCount = mutChars.count
    var revert_mutChars: [Int8] = Array.init(repeating: 0, count: mutCount)
    for i in 0..<mutCount {
        
        revert_mutChars[i] = mutChars[mutCount - 1 - i]
    }
    
    if revert_mutChars == mutChars {
        return true
    }
    return false
}

四、小结

1.耗时44毫秒,超过78.57%的提交记录,总提交数476

    原文作者:单车同学
    原文地址: https://www.jianshu.com/p/1b04a29df10c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞