leetcode1032
class StreamChecker:
def __init__(self, words: 'List[str]'):
self.maxLen = 0
self.List = set(words)
for w in self.List:
self.maxLen = max(self.maxLen,len(w))
self.STR = '' def query(self, letter: str) -> bool: if letter in self.List:
return True
else:
self.STR += letter clen = len(self.STR)
if clen > self.maxLen:
self.STR = self.STR[1:] for w in self.List:
lw = len(w)
ls = len(self.STR)
if ls >= lw and w == self.STR[ls-lw:]:
return True
return False
此解决方案超时:

在上面的代码基础上,增加Trie数据结构,解决方案如下:
class Node:
def __init__(self):
self.isWord = False
self.next = [0]*26 class StreamChecker:
def __init__(self, words: 'List[str]'):
self.maxLen = 0
self.Trie = Node()
dwords = set(words)
for w in dwords:
cur = self.Trie
for i in range(len(w)-1,-1,-1):
c = w[i]
index = ord(c) - ord('a')
if not cur.next[index]:
cur.next[index] = Node()
cur = cur.next[index]
if i == 0:
cur.isWord = True
self.maxLen = max(self.maxLen,len(w))
self.STR = '' def query(self, letter: str) -> bool:
self.STR += letter
clen = len(self.STR)
if clen > self.maxLen:
self.STR = self.STR[1:] cur = self.Trie
for i in range(len(self.STR)-1,-1,-1):
c = self.STR[i]
index = ord(c) - ord('a')
if not cur.next[index]:
return False
else:
cur = cur.next[index]
if cur.isWord:
return True
return False
leetcode1032的更多相关文章
- [Swift]LeetCode1032. 字符流 | Stream of Characters
Implement the StreamChecker class as follows: StreamChecker(words): Constructor, init the data struc ...
随机推荐
- guava-retrying 源码解析(等待策略详解)
一.等待策略相关类: 1.等待策略接口:WaitStrategy接口 该接口只有一个方法,就是返回尝试失败之后,下一次尝试之前的等待时间.long computeSleepTime(Attempt f ...
- My First Linux Module
My First Linux Module Today, I successfully build my first linux hello module. First of all add a di ...
- chown语法
chown 作用:改变某个文件或目录的所有者和所属的组, 该命令可以向某个用户授权,使该用户编程指定文件的所有者或者改变文件的所属组, 用户可以是用户或者是用户ID, 用户组可以是组名或者租ID, ...
- 解决ubuntu下firefox的flash全屏后不能恢复问题 ZT
sudo mkdir /etc/adobe echo "OverrideGPUValidation=true" >~/mms.cfg sudo mv ~/mms.cfg /e ...
- Open Nginx gzip
默认情况下,Nginx的gzip压缩是关闭的, gzip压缩功能就是可以让你节省不少带宽,但是会增加服务器CPU的开销哦,Nginx默认只对text/html进行压缩 ,如果要对html之外的内容进行 ...
- Binary Search Tree Learning Summary
BST Definition BST is short for Binary Search Tree, by definition, the value of right node is always ...
- 学c++需要先学c语言吗?
看你的需求,如果是底层开发,就必须学习C语言.如果只是应用开发,可以直接从C++开始学习.实际上这两个语言是平等的,只是在语法上C++尽量与C兼容,但仍然有很多不同的地方. 1) C++不是C的超集. ...
- 解决Yii2中刷新网页时验证码不刷新的问题
解决Yii2中刷新网页时验证码不刷新的问题 [ 2.0 版本 ] ljfrocky 2015-05-30 19:39:00 1304次浏览 5条评论 10110 在Yii2框架中,如果在表单中使用 ...
- mount: mounting proc on /proc failed: Device or resource busy
/********************************************************************** * mount: mounting proc on /p ...
- CentOS 6.9搭建CDH 5.12.0集成环境
Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机.Hadoop.Hive.Spark等服务的安装配置管理做了极大简化. ...