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 ...
随机推荐
- Mongodb条件查询Query的用法
Query.All("name", "a", "b");//通过多个元素来匹配数组Query.And(Query.EQ("name ...
- [C#][Report]Cry
本文来自:https://wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports%2C+Developer+for+Visual+Studio+Downl ...
- docker之小记一
PaaS上build新版本的基础组件的镜像总是失败,提示也不是很明确.突然想起来,镜像的依赖关系做过变更,可能是缺少基础镜像的原因. 由于没有统一的仓库或者只是我还不知道,就从制品库下载对应的镜像,然 ...
- (转)查询或修改iPhone的短信服务中心号码(iOS通用)
有些时候会有提示你自己的iPhone无法发送短信,原因是没有设置短信中心号码,下面就介绍一下如何设置iPhone的短信中心号码和iPhone查看短信中心号码的方法.(iOS通用) iPhone的设置短 ...
- SQL SERVER 事务相关
1 准备数据 及 涉及到的几个设置 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED --设置事务会话的隔离等级(默认值为 READ UNCOMMIT ...
- CentOS的文件属性:命令 ls -l
第一列:有11位 1)第一位表示文件类型 1)l表示链接文件 2)d表示目录 3)-普通文件 4)b块设备 磁盘分区就是这种类型 5)c 串行端口设备文件(字符设备文件),比如键盘,鼠标,打印机,t ...
- 第2课 类型推导(2)_decltype关键字
1. decltype关键字 (1)auto所修饰的变量必须被初始化,编译器才能通过初始化来确定auto所代表的类型,即必须先定义变量. (2)decltype可以在编译期推导出一个变量或表达式的结果 ...
- lesson
需要深入研究:1.pinctrl子系统2.gpio子系统3.dtsi的处理架构4.printk的log级别和log机制5.中断子系统6.console是什么?log来自哪里?7.kernel命令行参数 ...
- MPEG-1视屏压缩标准
MPEG-1标准包括5个部分 图像的四种类型: I帧: B帧:双向帧间预测 P帧: D帧:只含有16分量,为快放设计 压缩前需要帧重排 视屏码流结构 I帧压缩 p帧压缩 b帧压缩 其他压缩算法 MPE ...
- mysql短日期 长时间转换为短日期
fabutime 2018-09-26 15:27:03 date_format( fabutime,\'%Y-%m-%d\') as fabutime fabutime 2018-09-2 ...