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 ...
随机推荐
- Linux设备驱动程序 第三版 读书笔记(一)
Linux设备驱动程序 第三版 读书笔记(一) Bob Zhang 2017.08.25 编写基本的Hello World模块 #include <linux/init.h> #inclu ...
- Mac 下配置Lua环境
1.下载LUA源码包 curl -R -O http://www.lua.org/ftp/lua-5.3.1.tar.gz 2.解压并进入目录 tar -xvf lua-.tar.gz cd lua- ...
- 关于第一次在IED(MyEclipse)部署Maven时,pom.xml头部报这样的错---org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration)
rg.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache ...
- Flink实战(1) - Apache Flink安装和示例程序的执行
在Windows上安装 从官方网站下载需要的二进制包 比如我下载的是flink-1.2.0-bin-hadoop2-scala_2.10.tgz,解压后进入bin目录 可以执行bat文件,也可以使用c ...
- escu问题及解决
************************************************************** Qt 出现“undefined reference to `vtable ...
- 【Keil5 MDK】armar工具的基本用法(armar --help)
ARM Librarian, 5.03 [Build 76] - archive creation and maintenance tool Command format: armar options ...
- c++简单实现对mysql数据库操作
1.连接数据库 #include <mysql.h> #include <iostream> #include<string> #include<vector ...
- centos7通过yum安装mysql,并授权远程连接 【转】
http://blog.csdn.net/u012367513/article/details/40538267 用于备忘
- mysql连接拍错总结
1. ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10060) ? 关闭网络防火墙.
- The Twelve-Factor Container
转自:https://medium.com/notbinary/the-twelve-factor-container-8d1edc2a49d4?%24identity_id=550978996201 ...