【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
}
}