leetcode 面试题 16.18 回溯法 题不难 只是细节比较多

leetcode 面试题 16.18 回溯法 题不难 只是细节比较多

在这里插入图片描述

//python3  leetcode 面试题 16.18  回溯法 题不难 只是细节比较多 +v 交流算法 alun503027568
class Solution:
    def patternMatching(self, pattern: str, value: str) -> bool:
  
        if pattern == 'a' or pattern == 'b':
            return True
        if pattern == "" and value == "":
            return True
        if (pattern == "" and value != "") or (pattern != "" and value == ""):
            return False
        ab = pattern.count(pattern[0]) 
        return self.isMacthing(pattern, value, int(len(value) / ab)) 

    def isMacthing(self, pattern, value, length):
        if length < 0:
            return False
        if len(pattern) - pattern.count(pattern[0]) == 0:
            len_b = 0
        else:
            len_b = int((len(value) - pattern.count(pattern[0]) * length) / (len(pattern) - pattern.count(pattern[0])))
   
        flag_b = ""
        index = 0
        str_ = ""
        flag = True
        for i in range(len(pattern)):
            if pattern[i] == pattern[0]:
                str_ += value[0:length]
                index += length
                if str_ != value[0:index]:
                    return self.isMacthing(pattern, value, length - 1)
            else:
                if flag and index + len_b <= len(value):
                    flag = False
                    flag_b = value[index:index + len_b]

                index += len_b
                str_ += flag_b
                if str_ != value[0:index]:
                    return self.isMacthing(pattern, value, length - 1)
        if str_ == value:
            return True
        return False
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值