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的更多相关文章

  1. [Swift]LeetCode1032. 字符流 | Stream of Characters

    Implement the StreamChecker class as follows: StreamChecker(words): Constructor, init the data struc ...

随机推荐

  1. echarts背景分割区域填充不同颜色(x轴为time),实时刷新

    先来看下图片吧,这是实现效果: 思路: 因为要实时刷新,可以使用setInterval(),但是要控制好定时器的起与停,否则容易错乱以及页面卡死: 主要就是利用定时器五秒刷新,重绘echarts图:= ...

  2. 3.oracle与mysql的区别

    1.自动增长的数据类型处理     MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值.ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的 ...

  3. 网络编程并发 多进程 进程池,互斥锁,信号量,IO模型

    进程:程序正在执行的过程,就是一个正在执行的任务,而负责执行任务的就是cpu 操作系统:操作系统就是一个协调.管理和控制计算机硬件资源和软件资源的控制程序. 操作系统的作用: 1:隐藏丑陋复杂的硬件接 ...

  4. 德州扑克AI--Programming Poker AI(译)

    前言: 最近在研究德州扑克的AI, 也想由浅入深的看下, 在网上找了一圈, 发现很多文章都提到了一篇文章: Programming Poker AI. 仔细拜读了一下, 觉得非常不错. 这里作下简单的 ...

  5. MVC+三层+ASP.NET简单登录验证

    通过制作一个登录小案例来搭建MVC简单三层 在View --Shared下创建一个母版页: <!DOCTYPE html> <html> <head> <me ...

  6. PHP常见错误级别及错误码

    数字 常量 说明 1 E_ERROR 致命错误,脚本执行中断,就是脚本中有不可识别的东西出现 举例: Error:Invalid parameters. Invalid parameter name ...

  7. prototype的一些事

    <script type="text/javascript"> foo=function(){ this.mayName="Foo function" ...

  8. node.js创建简单服务测试请求数据

    工具:安装node: 1,创建文件夹 server, 2 ,在server文件夹下分别创建server.js 和 package.json 文件 3,server.js 代码: var express ...

  9. 使用mysqlproxy实现mysql读写分离

    先说一下什么是读写分离吧. 以三台虚拟机为例,搭建一主一从一代理,全部配置好之后,当从proxy插入数据时,该数据会同时插入主数据库,因为主从关系,从数据库也会有数据.当把从数据库执行slave st ...

  10. js正则表达式讲的最好的

    https://www.cnblogs.com/chenmeng0818/p/6370819.html