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 ...
随机推荐
- echarts背景分割区域填充不同颜色(x轴为time),实时刷新
先来看下图片吧,这是实现效果: 思路: 因为要实时刷新,可以使用setInterval(),但是要控制好定时器的起与停,否则容易错乱以及页面卡死: 主要就是利用定时器五秒刷新,重绘echarts图:= ...
- 3.oracle与mysql的区别
1.自动增长的数据类型处理 MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值.ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的 ...
- 网络编程并发 多进程 进程池,互斥锁,信号量,IO模型
进程:程序正在执行的过程,就是一个正在执行的任务,而负责执行任务的就是cpu 操作系统:操作系统就是一个协调.管理和控制计算机硬件资源和软件资源的控制程序. 操作系统的作用: 1:隐藏丑陋复杂的硬件接 ...
- 德州扑克AI--Programming Poker AI(译)
前言: 最近在研究德州扑克的AI, 也想由浅入深的看下, 在网上找了一圈, 发现很多文章都提到了一篇文章: Programming Poker AI. 仔细拜读了一下, 觉得非常不错. 这里作下简单的 ...
- MVC+三层+ASP.NET简单登录验证
通过制作一个登录小案例来搭建MVC简单三层 在View --Shared下创建一个母版页: <!DOCTYPE html> <html> <head> <me ...
- PHP常见错误级别及错误码
数字 常量 说明 1 E_ERROR 致命错误,脚本执行中断,就是脚本中有不可识别的东西出现 举例: Error:Invalid parameters. Invalid parameter name ...
- prototype的一些事
<script type="text/javascript"> foo=function(){ this.mayName="Foo function" ...
- node.js创建简单服务测试请求数据
工具:安装node: 1,创建文件夹 server, 2 ,在server文件夹下分别创建server.js 和 package.json 文件 3,server.js 代码: var express ...
- 使用mysqlproxy实现mysql读写分离
先说一下什么是读写分离吧. 以三台虚拟机为例,搭建一主一从一代理,全部配置好之后,当从proxy插入数据时,该数据会同时插入主数据库,因为主从关系,从数据库也会有数据.当把从数据库执行slave st ...
- js正则表达式讲的最好的
https://www.cnblogs.com/chenmeng0818/p/6370819.html