LeetCode 125 _ 字符串

1. 题目描述

https://leetcode-cn.com/problems/valid-palindrome/

2. 代码

 1 class Solution:
 2     def isPalindrome(self, s: str) -> bool:
 3         S = list()#定义一个列表,模拟栈
 4         Q = list()#定义一个离诶包,模拟队列
 5         if len(s) == 0:#空字符串,被当作是回文字符串
 6             return True
 7         s = s.lower()#将原字符串转化为小写
 8         for c in s:#如果当前字符是小写字母(a~z)或者数字(0~9)
 9             if (ord(c) >= 97 and ord(c) <= 122) or (ord(c) >= 48 and ord(c) <= 57):
10                 S.append(c)#添加到栈中
11                 Q.append(c)#添加到队列中
12         while len(S) > 0:
13             ss = S.pop(-1)#栈取栈顶元素(尾部)
14             qq = Q.pop(0)#队列取队头元素(首部)
15             if ss != qq:#如果字符不相同,则表示不是回文
16                 return False
17         return True#如果所有字符都比对完毕,没有发现不相同的字符,则是回文

3. 语法整理

3.1 lower()方法, 转换字符串中所有大写字符为小写.

str.lower()

3.2 ord(), 以一个字符(长度为1的字符串)作为参数, 返回对应的 ASCII 数值, 或者 Unicode 数值.

ord(c)

返回值为对应的十进制整数. 如:

>>>ord('a')
97
>>> ord('b')
98
>>> ord('c')
99

3.3 26个字母大小写的ASCII码值:

小写:
a → 97,   b → 98,  c → 99,   d → 100,  e → 101,    f → 102,
g → 103, h → 104, i → 105,  j → 106,  k → 107,     l → 108,
m → 109,n → 110, o → 111, p→ 112,   q → 113,     r → 114,
s → 115,  t → 116,  u → 117,v → 118,   w → 119,    x → 120, y → 121, z → 122

大写:
A → 65,B → 66,C → 67,  D → 68,  E → 69,
F → 70,G → 71,H → 72,  I → 73,   J → 74,
K → 75,L → 76, M → 77, N → 78,  O → 79,
P → 80,Q → 81,R → 82,  S → 83,  T → 84,
U → 85,V → 86,W → 87, X → 88,  Y → 89,Z → 90

数字:

0 → 48,1 → 49,2 → 50,  3 → 51,   4 → 52,
5 → 53,6→ 54, 7 → 55,  8 → 56,   9 → 57

3.4 pop(), 用于移除列表中的一个元素(默认最后一个元素), 并且返回该元素的值.

1 list.pop([index=-1])
1 list1 = ['Google', 'Runoob', 'Taobao']
2 list_pop=list1.pop(1)
3 print ("删除的项为 :", list_pop)
4 print ("列表现在为 : ", list1)

输出为:

1 删除的项为 : Runoob
2 列表现在为 :  ['Google', 'Taobao']

3.5 栈和队列

   栈:  先进后出

队列:  先进先出

 

 

posted @ 2020-09-24 20:42  vv_869  阅读(156)  评论(0编辑  收藏  举报