class Solution(object):
def getGroup(self,que):
group = list()
temp = ''
for i in range(len(que)):
cur = que[i]
if cur.isupper():
group.append(temp)
temp = ''
temp += cur
if len(group)>0 and len(group[0])==0:
group.pop(0)
group.append(temp)
return group def camelMatch(self, queries: 'List[str]', pattern: str) -> 'List[bool]':
patgroup = list()
temp = ''
for i in range(len(pattern)):
cur = pattern[i]
if cur.isupper():
patgroup.append(temp)
temp = ''
temp += cur
patgroup.append(temp)
if len(patgroup)>0 and len(patgroup[0])==0:
patgroup.pop(0)
grouplen = len(patgroup) resultli = list()
for i in range(len(queries)):
cond = True
que = queries[i]
cg = self.getGroup(que)
if (len(cg) == grouplen + 1) and cg[0].islower():
cg.pop(0) if len(cg) != grouplen:
resultli.append(False)
continue
else:
for j in range(grouplen):
str1 = cg[j]
str2 = patgroup[j]
len1 = len(str1)
len2 = len(str2) m = 0
n = 0
while m < len1 and n < len2:
if str1[m] == str2[n]:
m += 1
n += 1
else:
m += 1
if n < len2:
cond = False
break
if not cond:
resultli.append(cond)
continue
resultli.append(cond) return resultli

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

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

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

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

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

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

leetcode1023的更多相关文章

  1. [Swift]LeetCode1023. 驼峰式匹配 | Camelcase Matching

    A query word matches a given pattern if we can insert lowercase letters to the pattern word so that ...

随机推荐

  1. 了解轮询、长轮询、长连接、websocket

    业务开发中我们往往会有一些需要即时通信的场景,比如微信扫码登录.聊天功能. 下面这四种方式都可以实现即时通信. 轮询: 浏览器通过定时器每隔一段时间向服务器端发送请求,服务器端收到请求并响应请求.没有 ...

  2. extend 与 append 的区别

    >>> A = ['q', 'w', 'e', 'r'] >>> A.extend(['t', 'y']) >>> A ['q', 'w', 'e ...

  3. 《Effective Java》笔记-服务提供者框架

    静态工厂方法返回的对象所属的类,在编写包含该静态工厂方法的类时可以不必存在.这种灵活的静态工厂方法构成了服务提供者框架(Service Provider Framework)的基础,例如JDBC AP ...

  4. elasticsearch 安装(基于java运行环境)

    解压安装包 [root@Aliyun resource]# tar -xvf elasticsearch-5.5.2.tar.gz 添加当前主机的普通账户 [root@Aliyun resource] ...

  5. es6 class函数的用法,及兼容程度

    //es6中 class的新特性:面向对象的方式 class name{ fram(){ var div=document.getElementById("div"); div.s ...

  6. PHP 7下安装Swoole和Yar、Yaf

    安装步骤 1.wget -c https://github.com/swoole/swoole-src/archive/v2.0.8.tar.gz  百度盘链接:https://pan.baidu.c ...

  7. Find the peace with yourself

    The purpose of being mature is to find the real calm and peace with yourself. Or you can say the tur ...

  8. javascript-添加 class 类 和 移出 class 类 方法

    /* 添加 class 类 和 移出 class 类 方法*/ function addClass(element, className) { if(!new RegExp("(^|\\s) ...

  9. pyhton框架Django之cookie和session

    一,cookie和session的理解 cookies 是浏览器为 Web 服务器存储的一小段信息. 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies.它保存在浏览器下的某个文 ...

  10. DRF 视图组件代码

    序列化器代码 # 声明序列化器from rest_framework import serializersfrom djangoDome.models import Book class Publis ...