目录
这篇文章主要是关于字符串的常见考点,仅做学习记录。
1.回文数问题
题目描述:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
Ps: 本题中,我们将空字符串定义为有效的回文串。
输入: “A man, a plan, a canal: Panama”
输出: true
输入: “race a car”
输出: false
思路:用两个下标标记l,r分别从字符串的左右两侧同时向中间前进,遇到非字母和数字直接跳过,继续前进;
如果l>=r||字符串是空串,返回True;一旦下标对应的值不相等,返回False。
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
"""
思路:
用两个下标标记l,r分别从字符串的左右两侧同时向中间前进,遇到非字母和数字直接跳过,继续前进;
如果l>=r||字符串是空串,返回True;一旦下标对应的值不相等,返回False。
"""
def is_num_letter(s): # s是一个字符
if 48 <= ord(s) <= 57 or 97 <= ord(s) <= 122 or 65 <= ord(s) <= 90:
return True
else:
return False
s = input()
l = 0
r = len(s) - 1
flag = 1 # 1代表是回文串
# print(s[l], s[r])
while l < r:
if not is_num_letter(s[l]):
l += 1
elif not is_num_letter(s[r]):
r -= 1
else:
if s[l].lower() == s[r].lower():
l += 1
r -= 1
continue
else:
flag = 0
print("False")
break
if flag == 1:
print("True")