zoukankan      html  css  js  c++  java
  • leetcode1023

     1 class Solution(object):
     2     def getGroup(self,que):
     3         group = list()
     4         temp = ''
     5         for i in range(len(que)):
     6             cur = que[i]
     7             if cur.isupper():
     8                 group.append(temp)
     9                 temp = ''
    10             temp += cur
    11         if len(group)>0 and len(group[0])==0:
    12             group.pop(0)
    13         group.append(temp)
    14         return group
    15 
    16     def camelMatch(self, queries: 'List[str]', pattern: str) -> 'List[bool]':
    17         patgroup = list()
    18         temp = ''
    19         for i in range(len(pattern)):
    20             cur = pattern[i]
    21             if cur.isupper():
    22                 patgroup.append(temp)
    23                 temp = ''
    24             temp += cur
    25         patgroup.append(temp)
    26         if len(patgroup)>0 and len(patgroup[0])==0:
    27             patgroup.pop(0)
    28         grouplen = len(patgroup)
    29 
    30         resultli = list()
    31         for i in range(len(queries)):
    32             cond = True
    33             que = queries[i]
    34             cg = self.getGroup(que)
    35             if (len(cg) == grouplen + 1) and cg[0].islower():
    36                 cg.pop(0)
    37 
    38             if len(cg) != grouplen:
    39                 resultli.append(False)
    40                 continue
    41             else:
    42                 for j in range(grouplen):
    43                     str1 = cg[j]
    44                     str2 = patgroup[j]
    45                     len1 = len(str1)
    46                     len2 = len(str2)
    47                     
    48                     m = 0
    49                     n = 0
    50                     while m < len1 and n < len2:
    51                         if str1[m] == str2[n]:
    52                             m += 1
    53                             n += 1
    54                         else:
    55                             m += 1
    56                     if n < len2:
    57                         cond = False
    58                         break
    59                 if not cond:
    60                     resultli.append(cond)
    61                     continue
    62             resultli.append(cond)
    63 
    64         return resultli

    这道题的题目描述不清楚,所以做的时候会中陷阱。有2个问题没有说清楚:

    1子字符串是否必须要求连续,也就是字符串Babc与模式Bac是否匹配。本题中的要求是不要求连续,也就是Babc满足Bac模式。

    2骆驼模式第一组小写不影响模式,也就是说字符串uBa与模式Ba是匹配的,即使模式没有第一组小写的u字符。

    我觉得这些应该在题目描述中和example中明确出来,但是却没有。

    明确了以上的问题,解决思路就比较容易确定了。

    主要思想是,捕捉字符所具有的模式,将模式分组。然后每一个组进行匹配。主要的比较逻辑是在50~60行部分。主要解决的是上面第1个问题。

  • 相关阅读:
    print格式化输出(format)
    Python list,tuple,dict,set高级变量常用方法
    K8s的kubectl常用命令
    C/C++中数组与指针的关系探究
    Java中的不可变类
    JAVA 类总结
    c++ string类find总结
    关于看板娘的事儿
    类型转换
    计算机2进制小数点表示法
  • 原文地址:https://www.cnblogs.com/asenyang/p/10665786.html
Copyright © 2011-2022 走看看