首页 > 趋势科技两个编程题(2020年9月12日)
头像
岗迭尼山歌龙
编辑于 2020-09-12 20:29
+ 关注

趋势科技两个编程题(2020年9月12日)

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

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐