题目如下:

Given many wordswords[i] has weight i.

Design a class WordFilter that supports one function, WordFilter.f(String prefix, String suffix). It will return the word with given prefix and suffix with maximum weight. If no word exists, return -1.

Examples:

Input:
WordFilter(["apple"])
WordFilter.f("a", "e") // returns 0
WordFilter.f("b", "") // returns -1

Note:

  1. words has length in range [1, 15000].
  2. For each test case, up to words.length queries WordFilter.f may be made.
  3. words[i] has length in range [1, 10].
  4. prefix, suffix have lengths in range [0, 10].
  5. words[i] and prefix, suffix queries consist of lowercase letters only.

解题思路:以输入apple为例,前缀和后缀分别有6个,分别为"","a","ap","app","appl","apple",两者组合起来就是36个。words中最长的word的长度是10,那么组合就是11*11 = 121个,words的最大长度是15000,总的组合个数1815000,似乎在可以接受的范围之内。所以,只要预先把所有单词的所有前缀后缀的组合预先计算出来,那么查找的时间复杂度就是O(1)了。

代码如下:

class WordFilter(object):

    def __init__(self, words):
"""
:type words: List[str]
"""
self.dic = {}
for i in range(len(words)-1,-1,-1):
word = words[i]
foward = ''
reverse = word
while len(reverse) >= 0:
if (foward,reverse) not in self.dic:
self.dic[(foward,reverse)] = i
for j in range(len(word)):
foward += word[j]
if (foward,reverse) not in self.dic:
self.dic[(foward,reverse)] = i
if len(reverse) > 0:reverse = reverse[1:]
else:break
foward = '' def f(self, prefix, suffix):
"""
:type prefix: str
:type suffix: str
:rtype: int
"""
if (prefix,suffix) in self.dic:
return self.dic[(prefix,suffix)]
return -1

最新文章

  1. Android Studio插件美化Android Studio,文艺清新范
  2. extjs5 常用属性的说明
  3. Sqoop安装配置及数据导入导出
  4. Swift常量和变量以及命名规范
  5. MVC跳转
  6. python实现人人网用户数据爬取及简单分析
  7. Mybatis整理_01
  8. Winform开发框架中工作流模块之审批会签操作(2)
  9. Junit4测试报错
  10. 解决无法同步 OneNote 的问题
  11. .net问号的作用
  12. vue中集成pdfjs自定义分页
  13. Java 关键字final的一小结
  14. linux grep 取出特定字符串并统计个数
  15. [UE4]让子弹飞:抛射物子弹、瞬时子弹
  16. python登录网易163邮箱,爬取邮件
  17. python中不可变数据类型和可变数据类型
  18. Oracle HA 之 SERVICE和DRM实战
  19. Spring Tech
  20. UVA11324 The Largest Clique

热门文章

  1. C# 重写WndProc
  2. 利用docker搭建本地私有镜像仓库
  3. sql server备份损坏
  4. [转帖]linux 下yum使用技巧
  5. 水晶报表和rdlc报表传入参数筛选
  6. kafka安装使用配置1.1
  7. 使用HTMLTestRunner生产报告
  8. CF 1133C Balanced Team
  9. gunicorn 介绍与性能分析
  10. Skills CodeForces - 613B (双指针)