0️⃣python数据结构与算法学习路线
学习内容:
- 基本算法:枚举、排序、搜索、递归、分治、优先搜索、贪心、双指针、动态规划等…
- 数据结构:字符串(string)、列表(list)、元组(tuple)、字典(dictionary)、集合(set)、数组、队列、栈、树、图、堆等…
题目:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
输入输出:
输入: “A man, a plan, a canal: Panama”
输出: true
解题思路:
如果不是空格返回字符的小写,组成新的字符串
判断正向和反向相同就是回文字符,返回 Ture
算法实现:
class Solution(object):
def isPalindrome(self, s):
sgood = "".join(ch.lower() for ch in s if ch.isalnum())
return sgood == sgood[::-1]
出现问题:
1.常见字符串去除字符串空格的方法:
去掉全部空格
- str.replace(old, new[, max])
old – 将被替换的子字符串。
new – 新字符串,用于替换old子字符串。
max – 可选字符串, 替换不超过 max 次
使用:str.replace(’ ', ‘’) - str.join(sequence)
去除开头或结尾的空格
str.strip([chars]);
使用:
str = "00000003210Runoob01230000000";
print(str.strip('0')) # 去除首尾字符 0
str2 = " Runoob " # 去除首尾空格
print(str2.strip())
#输出:
#3210Runoob0123
#Runoob
去除结尾的空格
str.rstrip([chars])
去除开头的空格
str.lstrip([chars])
2.print(ll.split(" "))
不是去掉空格,而是按空格分开字符串
使用:
第一种使用
ll = "a b c d"
print(ll.split(" "))
# 输出:
['a', '', 'b', '', 'c', '', '', '', 'd']
第二种使用
import re
ll = "a b c d"
print("re", re.split(r"[ ]+", ll))
# 输出
['a', 'b', 'c', 'd']