題目
給定一個字符串,驗證它是否是迴文串,只考慮字母和數字字符,可以忽略字母的大小寫。
說明:本題中,我們將空字符串定義爲有效的迴文串。
示例 1:
輸入: "A man, a plan, a canal: Panama"
輸出: true
示例 2:
輸入: "race a car"
輸出: false
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/valid-palindrome
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
以下是我的go實現
func isPalindrome(s string) bool {
isValid:= func (v rune) bool {
return unicode.IsLetter(v) || unicode.IsDigit(v)
}
var left, right = 0, len(s)-1
var sl, sr string
for left < right {
if !isValid(rune(s[left])) {
left ++
continue
}
if !isValid(rune(s[right])) {
right--
continue
}
sl = string(s[left])
sr = string(s[right])
if strings.ToLower(sl)!=strings.ToLower(sr) {
return false
}
left++
right--
}
return true
}
執行結果: 通過
執行用時:4 ms
內存消耗:2.8 MB
發現還有2年前的Python提交記錄,一併放上來
class Solution(object):
def isPalindrome(self, s):
"""
:type s: str
:rtype: bool
"""
news = ''
for i in s:
if i.isalpha() or i.isdigit():
news += i.lower()
reverse_s = news[::-1].lower()
if news == reverse_s:
return True
else:
return False
執行結果: 通過
執行用時:1508 ms