数据结构和算法
zy_whynot
这个作者很懒,什么都没留下…
展开
-
检查一个数是不是质数
需求:输入一个数,检查是否是素数(质数)。质数:除了1和本身不能被其他的数整除def check_number(num): """思路:2~num-1之间的数是否有能被num整除的,如果有,num不是素数,否则num是素数""" for i in range(2, num): if num % i == 0: print("{}不是质数!".format(num)) break else: print原创 2021-05-09 10:12:38 · 173 阅读 · 0 评论 -
判断回文词
需求需求:判断一个词是否是”回文词“输入:字符串输出:True / False实现思路用双端队列实现首尾字符的操作代码示例"""用list实现双端队列"""class Deque(object): def __int__(self): self.items = [] def add_front(self, item): self.items.insert(0, item) def add_rear(self, item):原创 2021-03-17 23:22:30 · 187 阅读 · 0 评论 -
热土豆问题
需求需求:热土豆,即假如列表中有10个人[“aa”, “bb”, “cc”, “dd”, “ee”, “ff”, “gg”, “hh”, “ii”, “jj”], 每次把土豆传递5次,土豆在谁手上就把谁移除队列,直到队列中只有1人时返回这个人名输入:name_list:人名列表, num:移动的次数输出:最后的人名代码示例from test06_Queue.Queue import Queuedef hot_potato(name_list, num): # 初始化队列原创 2021-03-17 12:31:04 · 636 阅读 · 0 评论 -
求后缀表达式的值
上篇文章介绍了 中缀表达式 转 后缀表达式这篇文章接着分享 计算后缀表达式的值需求需求:求后缀表达式的值;输入:后缀表达式;输出:运算结果代码演示from test05_stack.Stack import Stackimport redef after_opt_ret(expr): # 操作数范围 # expr_list = range(10000) # 初始化一个栈,用来保存操作数 sk = Stack() # 从前到后扫描操作数列表原创 2021-03-16 23:14:31 · 214 阅读 · 0 评论 -
中缀表达式 转 后(前)缀表达式
需求需求:中缀表达式 转 后缀表达式(前缀表达式)输入:中缀表达式输出:后缀表达式算法思路从左到右扫描中缀表达式单词列表如果单词是操作数,则直接添加到后缀表达式列表的末尾如果单词是左括号“(”,则压入opstack栈顶如果单词是右括号“)”,则反复弹出opstack栈顶操作符,加入到输出列表末尾,直到碰到左括号如果单词是操作符“*/±”,则压入opstack栈顶• 但在压入之前,要比较其与栈顶操作符的优先级• 如果栈顶的高于或等于它,就要反复弹出栈顶操作符,加入到输出列表末尾原创 2021-03-16 21:55:51 · 124 阅读 · 0 评论 -
十进制转换为其他进制
需求需求:十进制转二进制,十进制除以2,直达商为0,余数反转,次序反转可以用栈实现输入:一个十进制的数字输出:转换后的数据十进制转二进制def shi_transform_er(num0): # 十进制转换为二进制 s = [] consult = 1 # 商 while consult != 0: consult = num0 // 2 remainder = num0 % 2 # 余数 s.append(rem原创 2021-03-14 12:00:01 · 188 阅读 · 1 评论 -
括号匹配
括号匹配需求:检查括号是否配对输入:一系列括号字符串输出:True或False例1输入:"(()())"输出:True例2输入:"(()()"输出:False方法1# 方法1def check_brackets01(brackets): # 把括号字符串转变为括号列表 bracket_list = list(brackets) flag = True # 判断 for idx, item in enumerate(bracket_list):原创 2021-03-13 13:21:20 · 338 阅读 · 0 评论 -
检查两个词是否是“变位词”
需求需求:检查两个词是否是“变为词”(变位词:两个词是有相同的字母不同的排序组成,例如:earth和heart,python和typhon)输入:两个单词输出:0或者1,0:表示不是变位词,1:两个词是变位词方法一# 方法一def check_word01(world01, world02): """时间复杂度:O(n)""" flag = 1 # 默认是变位词 if len(world01) != len(world02): # 检查长度是否相同原创 2021-03-07 12:25:30 · 1021 阅读 · 3 评论