'''
给定一个字符串,验证它是否为回文串,它其中包含了很多,但只考虑<<数字字符和字母>>
注意:
--忽略大小写
解决方法:
1.直接使用str.lowwer()转化为小写字符
2.每次循环自己判断
if s[i]>s[n-i] 这样可以假设s[i]为小写字母,s[n-i]为大写字母
if s[i]-32=s[n-i]那么就说明[i]是[n-i]的小写
就可以该干嘛干嘛了
都差不多,但是既然有时间,就第二种吧
--不考虑除数字字符和字母以外的其他
如何判断是数字字符和字母???
有点不知道怎么写,先用人家的代码判断吧
'''
'''
双指针+杂七杂八的判断
哈哈哈写完了,写之前就感觉有点问题这种方法,最后果然,可读性太差了
也不想优化细节了,就这样吧
'''
def fun1(s):
cur=0#左指针
n=len(s)-1
while cur<=n:
#判断是不是数字和字符
if s[cur].isalnum():
#说明s[cur]是字母或数字
if s[n].isalnum():
#s[n]说明是数字或字母
if s[cur]!=s[n]:#他俩不一样,已经不能两个都是数字了
if s[cur].isalpha() and s[n].isalpha():#判断是不是都是字母,如果是还能走下去
if ord(s[cur])-ord(s[n])!=32 and ord(s[n])-ord(s[cur])!=32:
#也就是说他俩不是大小字母关系
return False
else:
return False
cur+=1
n-=1
else:
#不是数字,字母,往前移
n-=1
else:
#不是数字,字母,往后移
cur+=1
return True
print(fun1("0P"))#哈哈哈,正好对上了,所以不能这样搞了
print(ord('0'))
print(ord('P'))
'''
方法1:答案的代码,还是可读性好一些,基本思路是一样的
'''
def fun2(s):
n = len(s)
left, right = 0, n - 1
while left < right:
while left < right and not s[left].isalnum():
left += 1
while left < right and not s[right].isalnum():
right -= 1
if left < right:
if s[left].lower() != s[right].lower():
return False
left, right = left + 1, right - 1
return True
'''
哈哈哈直接这样写,多爽
我不知道怎么判断这个字符是不是数字字符或者字母
这是个对于我来说的难点
'''
def fun3(s):
sum1=''
for i in s:
if i.isalnum():
sum1+=i.lower()
return sum1==sum1[::-1]
fun3("A man, a plan, a canal: Panama")
==========================================================================================================================================================================================================================================================================================================================================
8. 字符串转换整数 (atoi)
这个题目记得去看一下答案,学习一下思想
自动机,哈哈哈新玩意
我现在没仔细看,但我决定我的思想差不多
找到什么时候开始,什么时候结束
可能出现的各种情况
'''
让我实现一个算法,字符串转整数
算法如下:
--丢弃无用的最开始的"前导空格"
--检测走过最开始空格后的第一个字符
==如果是'-'或'+'则确定了结果的正负
==如果是数字,则默认为正数
--在前导空格结束后遇到非数字直接结束对字符串的遍历
--对于0032这类,以0开头的数字将0删除
--对于超出[-2**31,2**31-1]的数字进行截断操作
--返回结果为整数
提示:
s 由英文字母(大写和小写)、数字(0-9)、' '、'+'、'-' 和 '.' 组成
'''
'''
先想一下思路,我现在写完了
但是我不想写思路了,没啥太大的难度,想好所有可能出现的情况,并进行排除就好了
我要去和妹子聊天,嗯再见
'''
'''
'''
def fun1(s):
for i in range(len(s)):
if s[i].isalpha() or s[i] == '.': # 第一个非空格的是个字符
return 0
elif s[i] in (