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 ...
随机推荐
- C++进阶--静态多态
//############################################################################ /* * 多态 */ // 常见的动态多态 ...
- 延时队列:Java中的DelayQueue
Java中的DelayQueue位于java.util.concurrent包下,本质是由PriorityQueue和BlockingQueue实现的阻塞优先级队列. 放入队列的元素需要实现java. ...
- Java学习——使用Static修饰符
程序功能:通过两个类 StaticDemo.LX4_1 说明静态变量/方法与实例变量/方法的区别. package Pack1; public class Try { public static vo ...
- 计时器setTimeout()
setTimeout()计时器,在载入后延迟指定时间后,去执行一次表达式,仅执行一次. 语法: setTimeout(代码,延迟时间); 参数说明: 1. 要调用的函数或要执行的代码串. 2. 延时时 ...
- DockerFile服务
Dockerfile分为四部分:基础镜像信息.镜像创建者信息.镜像操作指令.容器启动执行指令. 一.Dockerfile的书写规则及指令使用方法 Dockerfile的指令是忽略大小写的,建议使用大写 ...
- Android 设置SeekBar不可拖动
public class MyProgressBar extends SeekBar { /** * 是否支持拖动进度 */ private boolean touch = true; public ...
- int main(int argc,char* argv[])浅析
int main(int argc,char* argv[])浅析 argc : 指输入参数个数,默认值1,就是执行程序名称 argv[] : 输入参数数组指针 举个栗子: 1. 编写一个argc.c ...
- [VS工具]远程在IIS附加调试代码
1.首先在服务器以管理员的方式打开msvsmon.exe(一般这个文件路径:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\ID ...
- Ubuntu 16.04.3 LTS 部署 Cloud Torrent
下载安装程序 apt install -y curl sudo curl https://i.jpillora.com/cloud-torrent! | bash 写配置文件 sudo vim /et ...
- tp3.2 支付宝手机网站支付
手机网站支付接口,支付宝官方文档:https://b.alipay.com/signing/productSet.htm?navKey=all 第一步: 1)登陆支付宝企业账号 进入支付宝官网 ,登陆 ...