diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 018. \346\234\211\346\225\210\347\232\204\345\233\236\346\226\207/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 018. \346\234\211\346\225\210\347\232\204\345\233\236\346\226\207/README.md" index bb3de48e35f4e..6f059d073bca2 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 018. \346\234\211\346\225\210\347\232\204\345\233\236\346\226\207/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 018. \346\234\211\346\225\210\347\232\204\345\233\236\346\226\207/README.md" @@ -206,6 +206,35 @@ impl Solution { } ``` +#### Swift + +```swift +class Solution { + func isPalindrome(_ s: String) -> Bool { + var i = s.startIndex + var j = s.index(before: s.endIndex) + + while i < j { + while i < j && !s[i].isLetter && !s[i].isNumber { + i = s.index(after: i) + } + while i < j && !s[j].isLetter && !s[j].isNumber { + j = s.index(before: j) + } + if i >= j { + break + } + if s[i].lowercased() != s[j].lowercased() { + return false + } + i = s.index(after: i) + j = s.index(before: j) + } + return true + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 018. \346\234\211\346\225\210\347\232\204\345\233\236\346\226\207/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 018. \346\234\211\346\225\210\347\232\204\345\233\236\346\226\207/Solution.swift" new file mode 100644 index 0000000000000..4f7e82123e45f --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 018. \346\234\211\346\225\210\347\232\204\345\233\236\346\226\207/Solution.swift" @@ -0,0 +1,24 @@ +class Solution { + func isPalindrome(_ s: String) -> Bool { + var i = s.startIndex + var j = s.index(before: s.endIndex) + + while i < j { + while i < j && !s[i].isLetter && !s[i].isNumber { + i = s.index(after: i) + } + while i < j && !s[j].isLetter && !s[j].isNumber { + j = s.index(before: j) + } + if i >= j { + break + } + if s[i].lowercased() != s[j].lowercased() { + return false + } + i = s.index(after: i) + j = s.index(before: j) + } + return true + } +}