题目:输入两个字符串,第一个表示中序、第二个表示后序,中间用空格隔开,要求输出先序?
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) 回帖