leetcode1023
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的更多相关文章
- [Swift]LeetCode1023. 驼峰式匹配 | Camelcase Matching
A query word matches a given pattern if we can insert lowercase letters to the pattern word so that ...
随机推荐
- 了解轮询、长轮询、长连接、websocket
业务开发中我们往往会有一些需要即时通信的场景,比如微信扫码登录.聊天功能. 下面这四种方式都可以实现即时通信. 轮询: 浏览器通过定时器每隔一段时间向服务器端发送请求,服务器端收到请求并响应请求.没有 ...
- extend 与 append 的区别
>>> A = ['q', 'w', 'e', 'r'] >>> A.extend(['t', 'y']) >>> A ['q', 'w', 'e ...
- 《Effective Java》笔记-服务提供者框架
静态工厂方法返回的对象所属的类,在编写包含该静态工厂方法的类时可以不必存在.这种灵活的静态工厂方法构成了服务提供者框架(Service Provider Framework)的基础,例如JDBC AP ...
- elasticsearch 安装(基于java运行环境)
解压安装包 [root@Aliyun resource]# tar -xvf elasticsearch-5.5.2.tar.gz 添加当前主机的普通账户 [root@Aliyun resource] ...
- es6 class函数的用法,及兼容程度
//es6中 class的新特性:面向对象的方式 class name{ fram(){ var div=document.getElementById("div"); div.s ...
- PHP 7下安装Swoole和Yar、Yaf
安装步骤 1.wget -c https://github.com/swoole/swoole-src/archive/v2.0.8.tar.gz 百度盘链接:https://pan.baidu.c ...
- 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 ...
- javascript-添加 class 类 和 移出 class 类 方法
/* 添加 class 类 和 移出 class 类 方法*/ function addClass(element, className) { if(!new RegExp("(^|\\s) ...
- pyhton框架Django之cookie和session
一,cookie和session的理解 cookies 是浏览器为 Web 服务器存储的一小段信息. 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies.它保存在浏览器下的某个文 ...
- DRF 视图组件代码
序列化器代码 # 声明序列化器from rest_framework import serializersfrom djangoDome.models import Book class Publis ...