代码拉取完成,页面将自动刷新
# -*- coding: utf-8 -*-
# @Time : 2018/3/30 12:39
# @Author : Lv Zhangrun
# @Site :
# @File : CheckDuplicate.py
# @Software: PyCharm
import Stack
import Tree
class CheckDuplicate:
def __init__(self):
self.listOperators = ["+", "-", "×", "÷"]
self.dictOperators = {"+": 0, "-": 0, "×": 1, "÷": 1}
self.listPostOrder=[]
self.strPostOrder=""
def mixed_number(self, value):
list1 = value.split("’") # list1[0]为整数部分,list1[1]为分数部分
list2 = list1.pop().split("/") # list2[0]为分子,list2[1]为分母
return (int(list1[0]) * int(list2[1]) + int(list2[0])) / int(list2[1])
def proper_fraction(self, value):
list1 = value.split("/")
return int(list1[0]) / int(list1[1])
def getValue(self, value):
if "’" in value:
return self.mixed_number(value)
elif "/" in value:
return self.proper_fraction(value)
else:
return int(value)
def treeAndTree(self,value1, value2):
root1 = self.dictOperators[value1.root.data]
root2 = self.dictOperators[value2.root.data]
temp = []
if root1 >= root2:
temp.append(value1)
temp.append(value2)
elif root1 < root2:
temp.append(value2)
temp.append(value1)
return temp
def treeAndValue(self,value1, value2):
type1 = type(value1)
type2 = type(value2)
temp = []
if type1 == Tree.Tree:
temp.append(value1)
temp.append(value2)
else:
temp.append(value2)
temp.append(value1)
return temp
def valueAndValue(self,value1, value2):
temp = []
v1 = int(self.getValue(value1))
v2 = int(self.getValue(value2))
if v1 >= v2:
temp.append(value1)
temp.append(value2)
else:
temp.append(value2)
temp.append(value1)
return temp
def createTree(self,afterExpression):
stack = Stack.Stack()
for i in afterExpression:
if i in self.listOperators:
if stack.isEmpty() or stack.size() < 2:
print("后缀表达式不正确")
return
value1 = stack.pop()
value2 = stack.pop()
type1 = type(value1)
type2 = type(value2)
v1 = None
v2 = None
if type1 == str and type2 == str:
temp = self.valueAndValue(value1, value2)
v1 = temp[0]
v2 = temp[1]
elif (type1 == str and type2 == Tree.Tree) or (type1 == Tree.Tree and type2 == str):
temp = self.treeAndValue(value1, value2)
v1 = temp[0]
v2 = temp[1]
elif type1 == Tree.Tree and type2 == Tree.Tree:
temp = self.treeAndTree(value1, value2)
v1 = temp[0]
v2 = temp[1]
leftTree = Tree.Tree(v1, None, None)
rightTree = Tree.Tree(v2, None, None)
tree = Tree.Tree(i, leftTree, rightTree)
stack.push(tree)
else:
stack.push(i)
return stack
# 递归实现后序遍历
def postOrder_list(self,TreeNode):
if TreeNode:
# print(type(root.left))
self.postOrder_list(TreeNode.left)
self.postOrder_list(TreeNode.right)
if type(TreeNode.data) == Tree.Tree:
self.listPostOrder.append(TreeNode.data.left.data)
self.listPostOrder.append(TreeNode.data.right.data)
self.listPostOrder.append(TreeNode.data.data)
else:
self.listPostOrder.append(TreeNode.data)
return self.listPostOrder
def postOrder_str(self,TreeNode):
if TreeNode:
# print(type(root.left))
self.postOrder_str(TreeNode.left)
self.postOrder_str(TreeNode.right)
if type(TreeNode.data) == Tree.Tree:
self.strPostOrder=self.strPostOrder+TreeNode.data.left.data
self.strPostOrder = self.strPostOrder +TreeNode.data.right.data
self.strPostOrder = self.strPostOrder +TreeNode.data.data
else:
self.strPostOrder = self.strPostOrder +TreeNode.data
return self.strPostOrder
def isDuplicate(self,str1,str2):
if str1==str2:
print("重复!")
else:
print("不重复!")
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。