题目:输入两个字符串,第一个表示中序、第二个表示后序,中间用空格隔开,要求输出先序? class node: def __init__(self,value=None,left=None,right=None): self.value=value self.left=left self.right=right def GetTwoTree(str1,str2): root=node(str1[-1]) Index=str2.index(root.value) leftstr2=str2[:Index] maxindex=-1 for i in leftstr2: tmpindex=str1.index(i) if maxindex<tmpindex: maxindex=tmpindex if len(leftstr2)==1: root.left=node(leftstr2) elif len(leftstr2)==0: root.left=None else: root.left=GetTwoTree(str1[:maxindex+1],leftstr2) rightstr2=str2[Index+1:] if len(rightstr2)==1: root.right=node(rightstr2) elif len(rightstr2)==0: root.right=None else: root.right=GetTwoTree(str1[maxindex+1:-1],rightstr2) return root tmp=[] def preTraverse(root): if root!=None: tmp.append(root.value) preTraverse(root.left) preTraverse(root.right) return tmp if __name__ == '__main__': #str2 = 'bdac' # 中序 #str1='dbca' #后序 str2,str1=map(str,input().split()) root=GetTwoTree(str1,str2) tmp=preTraverse(root) result=''.join("%s"%v for v in tmp) print(result)
题目:给定一个用字符串表示的非负整数N(字符串表示),去掉k位后,使得剩下的数字Y最小?输出这个Y class Solution: def removeKdigits(self,num,k): stack=[] remain=len(num)-k for digit in num: while k and stack and stack[-1]>digit: stack.pop() k-=1 stack.append(digit) return ''.join(stack[:remain]).lstrip('0')&nbs***bsp;'0' if __name__ == '__main__': result=Solution() A=input() l=int(input()) print(result.removeKdigits(A,l))
全部评论
(0) 回帖