Shopee 8.2笔试

第一题:找平衡点,略

第二题: 数字n分成m份有多少种分发,主要m份不能为空。
class Solution:
    def divide(self, n, k) :
        dp = [[0 for _ in range(n+1)] for _ in range(k+1)]
        dp[0][0]=1
        for i in range(1,k+1):
            for j in range(0,n+1):
                if j-i>=0:
                    dp[i][j] = dp[i][j-i]+dp[i-1][j]
                else:
                    dp[i][j] = dp[i-1][j]
        return dp[k][n]-dp[k-1][n]


print(Solution().divide(7,3))

3. 解析xml,我用的是数去做的,先构建树,然后再在树上进行遍历:
class Solution:
    def GetXMLValue(self, inxml, path) :
        tree = {}
        
        def dfs(root,txml:str):
            if len(txml)==0:
                return
            if txml.startswith('</'):
                idx = 2
                while idx<len(txml) and txml[idx]!='>':
                    idx+=1
                dfs(root,txml[idx+1:])
                return
            if txml.startswith('<'):
                idx = 1
                while idx<len(txml) and txml[idx]!='>':
                    idx+=1
                root[txml[1:idx]]={}
                dfs(root[txml[1:idx]],txml[idx+1:])
                return
            idx = 0
            while idx<len(txml) and txml[idx]!='<':
                idx+=1
            root['key__spx'] = txml[:idx]

            dfs(root,txml[idx:])
        # 构建树
        dfs(tree,inxml)
        res = ""
        if len(path)==0:
            return res
        paths = path.split('.')
        def find(root,tpaths):
            if len(tpaths)==0:
                if 'key__spx' in root:
                    return root['key__spx']
                else:
                    return ""
            if tpaths[0] in root:
                return find(root[tpaths[0]],tpaths[1:])
            else:
                return ""
        # 判断path是否在树上
        return find(tree,paths)
print(Solution().GetXMLValue("<people><name>shopee</name></people>","people.name"))
print(Solution().GetXMLValue("<people><name>shopee</name></people>","people.age"))



#大华提前批##Shopee##笔经#
全部评论
这啥岗位,我咋没有第三题
1 回复 分享
发布于 2021-08-03 13:13
第三题直接懵了
点赞 回复 分享
发布于 2021-08-03 00:31
第三题我直接String的replaceAll("><","."),然后再找第一个'>&(476)#39;和'<&#39;中间的就是值。ac了90%
点赞 回复 分享
发布于 2021-08-03 08:59
大佬简历状态变成什么样子了?
点赞 回复 分享
发布于 2021-08-03 17:38

相关推荐

09-29 11:19
门头沟学院 Java
点赞 评论 收藏
分享
3 9 评论
分享
牛客网
牛客企业服务