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。
个人博客地址

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容