顺丰笔试

第一题,原始字符无顺序查找顺序字符'abcdefgh'的方案数,考完才看清楚题目,要去重。。。gg了

s = "aabhgfdec"
target = 'abcdefgh'
words = []
# 处理字符串
for j in range(len(s)):
    if s[j] in target:
        words.append(s[j])

        if j!=0:
            # 找到前缀,比如aabhgfdec中,遍历到b时,其前缀为a,那么就可以合并出新的字串ab
            prex = words[-2]
            if ord(prex[-1])+1 ==ord(s[j]):
                for i in range(len(prex)):
                    words.append(prex[i:]+s[j])

# 去重
words = list(set(words))
# 排序
words.sort()
# 采用深度优先搜索
def count_ways_to_spelling(target, words):
    def recursive_count(target, index):
        if index == len(target):
            return 1

        ways = 0
        for word in words:
            if target[index:index + len(word)] == word:
                ways += recursive_count(target, index + len(word))

        return ways

    return recursive_count(target, 0)

result = count_ways_to_spelling(target, words)
print("拼成 'abcdefgh' 的方案数:", result)

第二题,买糖果,有打折,没有思路。。。。有大佬会的指定下

全部评论
大佬能不能给几个用例让我参考下,实在没搞明白自己的算法为啥只能过18%
点赞 回复 分享
发布于 2023-09-05 23:16 江苏
额你的第一题是我的第二题,我的第一题是要对1e9+7取模的题
点赞 回复 分享
发布于 2023-09-06 18:37 北京

相关推荐

Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
1 11 评论
分享
牛客网
牛客企业服务