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 ...
随机推荐
- redis 安装配置 [转]
Redis是目前众多NoSQL产品中非常有特点的一款,支持的数据类型和方法都非常丰富,做为一款具备持久化功能的软件,实际使中更多却是将其做为cache. 三思在个人的测试环境中安装使用了两三天,这期间 ...
- 【转】在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解失效的原因和解决方法
参考 原文链接 @Transactional does not work on method level 描述 在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational) ...
- python学习疑问
1.(已解决) test = [1, 2, 3, 4] ", id(test)) def func(a): ", id(a)) a = a.remove(1) ", id ...
- 使用模板引擎artTemplate的几个问题总结
一.Template not found 有的时候模板写的并没有问题,可就是找不到.这时候可能是<script>加载顺序问题,模板渲染在模板加载完成之前先执行了,调整<script& ...
- 学习笔记之Sublime Text
Sublime Text - A sophisticated text editor for code, markup and prose https://www.sublimetext.com/ A ...
- 关于oracle的sqlplus显示不完全的修改方法
这样的显示看起来很痛苦 需要换行的时候没有进行换行,不需要换行的时候却进行了换行 参考的博客地址 https://blog.csdn.net/pan_tian/article/details/8059 ...
- 关于ros里ppp拨号隧道比如pptp,l2tp,sstp等等,造成多条路由,ospf的时候需要汇总为一条宣告的解决方案
官方解决方案: https://wiki.mikrotik.com/wiki/OSPF_and_PPPoE_Setup 实际解决步骤: So to get rid of /32 routes * on ...
- [UE4]增加观察者
角色死亡以后,让控制器控制另外一个只能移动,没有实体的Character角色 使用“Possess”函数让控制器控制新生成的观察者对象.如上图所示要使用Delay延迟1秒再生成观察者,是因为死亡的时候 ...
- [UE4]在AI Character中要获得AI的controller,需要使用Get AIController
- 获取器操作都是针对数据而不是数据集的,要通过append()方法添加数据表不存在的字段
获取器操作都是针对数据而不是数据集的,要通过append()方法添加数据表不存在的字段 public function getMembership(){ //加入会员s_id = 1 $busines ...