0
点赞
收藏
分享

微信扫一扫

【Swift】LeedCode 验证回文串

快乐码农Alan007 2022-02-09 阅读 119

【Swift】LeedCode 验证回文串
由于各大平台的算法题的解法很少有Swift的版本,小编这边将会出个专辑为手撕LeetCode算法题。新手撕算法。请包涵!!!

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

 

示例 1:

输入: "A man, a plan, a canal: Panama"
输出: true
解释:"amanaplanacanalpanama" 是回文串
示例 2:

输入: "race a car"
输出: false
解释:"raceacar" 不是回文串
 

提示:

1 <= s.length <= 2 * 105
字符串 s 由 ASCII 字符组成

Swift解法如下:

class Solution {
    func isPalindrome(_ s: String) -> Bool {
        var array:[String] = []
        for code in s.unicodeScalars {
            var number = code.value
            //去除一些无效符号
            if number >= 65 && number <= 90{ //大写字母
                array.append(String("\(Character(UnicodeScalar(number)!))"))
            }else if number >= 97 && number <= 122{ //小写字母
                array.append(String("\(Character(UnicodeScalar(number - 32)!))"))
            }else if number >= 48 && number <= 57 {  //数字
                array.append(String("\(Character(UnicodeScalar(number)!))"))
            }
        }
        print(array)
        for index in 0..<array.count / 2{
            if array[index] != array[array.count - 1 - index]{
                return false
            }
        }
        return true
    }
}
举报

相关推荐

0 条评论