数据结构
文章平均质量分 50
小星博博
啊这,我只是把CSDN当做我的笔记本!
展开
-
Python数据结构:BF算法、匹配括号、回文链表、生成螺旋矩阵、移除列表元素、计算后缀表达式的值、顺时针旋转n维矩阵90度、折半查找
目录BF算法匹配字符串匹配括号回文链表生成螺旋矩阵移除列表元素计算后缀表达式的值顺时针旋转n维矩阵90度折半查找BF算法匹配字符串BF算法:通过模式串T,与目标串S匹配,查找S中是否存在模式串T;实现思路:通过目标串S的下标取出元素与模式串下标取出元素进行依次比较,如果发生不匹配,则模式串的下标归零,目标串S指向下一个索引。要求:输出匹配目标串的第一个下标位,不匹配输出-1代码:def bf(st, tem): i = j = 0原创 2022-01-01 17:14:50 · 6460 阅读 · 48 评论 -
Python判断列表中是否有某个项,如果有将其移除,并输出移除后的列表长度和列表元素
直接上代码:# 输入一个列表lt,判断val是否在lt中,如果在,将其删除,最后输出删除后的lt和lt的长度def remove_element(lt, val): k = 0 for i in range(len(lt)): if lt[i] != val: lt[k] = lt[i] k += 1 return kif __name__ == '__main__': lt = list(map原创 2021-12-28 22:13:19 · 2026 阅读 · 0 评论 -
Python 对称矩阵顺时针旋转90度
方式一:这种方法是从右下角至上开始读取,然后依次向左读取,但是时间复杂度过高,建议看方式二# 把对称矩阵顺时针旋转90度# 该法问从左下角往上读取,再重新构造矩阵,时间复杂度叫高matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]# 旋转为 # [[7,4,1], # [8,5,2], # [9,6,3]]lt = []le = 0 # len(matrix)d原创 2021-12-15 14:01:04 · 1552 阅读 · 2 评论 -
Python 实现n*n螺旋矩阵
3*3螺旋矩阵:1 2 38 9 47 6 5实现代码:def spiral(n): matrix = [[0] * n for _ in range(n)] # 顺时针方向(右,下,左,上) dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] x = y = 0 dn = 0 # 方向指针0;向右填充,1:向下填充,2:向上填充,3:向上填充 for i in range(1, n * n + 1).原创 2021-12-15 13:47:03 · 7267 阅读 · 294 评论 -
Python KPM算法
一、要获取KPM算法的next[]数组def GetNext(t, next): j, k = 0, -1 next[0] = -1 while j < len(t) - 1: if k == -1 or t[j] == t[k]: # 如果k==-1 或者 开始位置和结尾位置有相同的元素 j, k = j + 1, k + 1 # j和k都加1,当前位匹配,则从下一个位置开始匹配,所以k+1;j再进行取下一位判断是否也是匹配,原创 2021-12-06 19:52:02 · 4711 阅读 · 79 评论 -
Python 求斐波那契数列
方法一:递归法#编写一个程序使用生成器生成斐波那契数列的前20项,并输出:#递归法def Fib(num1,num2,frequency): if frequency==1: return (num1+num2) else: sum=num1+num2 print(sum) frequency-=1 return Fib(num2,sum,frequency)a,b,c=0,1,20print(原创 2021-12-01 11:28:00 · 6810 阅读 · 1 评论 -
Python数据结构判断括号是否匹配
方式一:用键值对brackets = {'}': '{', ')': '(', ']': '['}bracketsLeft, bracketsRight = brackets.values(), brackets.keys()def is_match(str): lt = [] for c in str: if c in bracketsRight: # 左括号入栈 lt.append(c) eli原创 2021-11-23 11:43:25 · 3246 阅读 · 19 评论 -
Python逆波兰表达式
1.先创建ExpressClass类创建init构造函数 创建get_post_exp函数,获取后缀表达式 创建trans函数,中缀表达式转后缀表达式 创建get_value,获取后缀表达式的值from SqStack import SqStackclass ExpressClass: def __init__(self, str): self.exp = str # 中缀表达式存放位置 self.post_exp = [] # 后缀表达式存放原创 2021-11-12 23:07:35 · 4316 阅读 · 39 评论 -
Python栈的顺序存储结构,顺序栈类的实现,以及使用栈判断输入括号是否匹配算法
废话不多说,直接上代码更多源码分享请关注小星博博Giteehttps://gitee.com/xiaoxingbobo-personal1、首先添加SqStack顺序栈类class SqStack: # 构造函数 def __init__(self): self.data = [] # 声明空列表,作为栈的存放元素 # 判断栈是否为空 def empty(self): if len(self.data) == 0:原创 2021-11-12 20:43:03 · 5107 阅读 · 47 评论