当前位置: 首页 > news >正文

桂林网站开发m0773阿里云虚拟主机购买

桂林网站开发m0773,阿里云虚拟主机购买,网站开发人员的职能,哈铁工程建设公司网站心路历程#xff1a; 一道题干进去了一个下午#xff0c;单纯从解题角度可以直接用python的集合就很简单地解决#xff08;不知道是不是因为python底层的set()类#xff09;。后来从网上看到这道题应该从前缀树的角度去做#xff0c;于是花了半个多小时基于字典做了前缀树… 心路历程 一道题干进去了一个下午单纯从解题角度可以直接用python的集合就很简单地解决不知道是不是因为python底层的set()类。后来从网上看到这道题应该从前缀树的角度去做于是花了半个多小时基于字典做了前缀树的做法后来想锻炼一下多叉树的做法又花了一个多小时尝试。 前缀的含义是一个字符串的包含第一个元素作为开始的子序列在代码自动补全里应用很多。 注意的点 1、在利用字典建立多叉树的时候一般是利用循环不变量的原则每一层赋值root然后判断当前层是否已经之前创建过。 2、利用class建立多叉树的时候注意不要在初始化默认参数处设置children[]否则所有示例化对象的children都指向同一个内存花了很长时间找这个bug。 3、注意在一个单词添加完之后结尾要跟上一个结束判断符来区分到底是一个完整的单词还是一个其他长单词的一个部分。 4、写出来bug是很正常的事情只要按照顺序检查输入输出关系即可debug。 解法一python原生集合 class Trie:def __init__(self):self.set set()self.prefixset set()def insert(self, word: str) - None:self.set.add(word)for j in range(1, len(word)1): # 这块是取不到的所以要加一两个取不到的叠加self.prefixset.add(word[:j])def search(self, word: str) - bool:if word in self.set:return Trueelse:return Falsedef startsWith(self, prefix: str) - bool:# return True 直接return true可以过一半测试用例if prefix in self.prefixset:return Trueelse:return False解法二用字典实现多叉前缀树 class Trie:def __init__(self): # 用字典做一个前缀树self.dict {}self.end !def insert(self, word: str) - None:root self.dictfor i in range(len(word)):if word[i] not in root.keys():root[word[i]] {} # 循环不变量root root[word[i]]root[self.end] Nonedef search(self, word: str) - bool:# print(self.dict)root self.dictfor c in word:if c in root.keys():root root[c]else:return False# 还得保证单词结尾if self.end in root.keys():return Trueelse:return Falsedef startsWith(self, prefix: str) - bool:root self.dictfor c in prefix:if c in root.keys():root root[c]else:return Falsereturn True 解法三利用多叉树类实现前缀树对比起来还是用字典实现多叉树方便一些 class TreeNode:def __init__(self, valNone): # 不能在这里给children[]赋值然后再self.children children否则所有实例都维护一个列表内存浅拷贝问题self.val valself.children [] # !!!def values(self):values []for eve in self.children:values.append(eve.val)return valuesdef findvalindex(self, aval):for i in range(len(self.children)):if self.children[i].val aval:return iassert Falseclass Trie:def __init__(self): # 用多叉树作前缀树self.root TreeNode()def insert(self, word: str) - None:root self.rootfor i in range(len(word)):if word[i] not in root.values():node TreeNode(word[i])root.children.append(node)root node # 这句话无法赋值有赋值作用并且内存也确实变了但是不知道为什么.values()方法都赋值到了根节点上去-》因为浅拷贝到了一个列表上# print(root, root.children[-1])else:vindex root.findvalindex(word[i])root root.children[vindex]leaf TreeNode(!)root.children.append(leaf) # 加入结束符号def search(self, word: str) - bool:root self.rootfor c in word:if c in root.values():vindex root.findvalindex(c)root root.children[vindex]else:return False# print(root.values())# 此时root的children中应该包含leafif ! in root.values():return Trueelse:return Falsedef startsWith(self, prefix: str) - bool:root self.rootfor c in prefix:if c in root.values():vindex root.findvalindex(c)root root.children[vindex]else:return Falsereturn True # 不需要是none
http://www.w-s-a.com/news/739641/

相关文章:

  • 免费看舆情网站网站备案用户名忘了怎么办
  • 地方门户网站的分类网站的方案
  • 沧州哪里做网站网站的建设是什么
  • 设计公司海报秦皇岛seo网站推广
  • 网站导航规划wordpress做漫画
  • jsp体育用品网站建设wordpress 10万篇文章
  • 沈阳做微信和网站的公司网站在线支付接口
  • 重庆整合网络营销百度seo快速提升排名
  • 设计师网站外网百度分析工具
  • 旅游网站建设技术解决方案wordpress主题安装后找不到
  • 网站图片文字排版错误管理系统界面设计
  • 网站建设 台州广州惠科互联网技术有限公司
  • 网站页面尺寸大小四川鸿业建设集团网站
  • 做女朋友的网站局网站建设方案word
  • 做阿里国际网站会有成效吗科技网站有哪些
  • 高端公司网站建设北京两学一做网站
  • 黄埔网站建设设计wordpress 文件夹改名
  • 怎么什么软件可以吧做网站最火的二十个电商app
  • wordpress theme sage网站seo优化加推广
  • 建设一个大型电影网站公司网站建设工作总结
  • 传奇网站一般怎么做的宇泽佛山网站建设
  • google网站入口电商运营十大基础知识
  • 建设公司网站的细节中国建设网网站
  • 重庆美邦建网站宝安网页设计
  • 建网站的地址十堰做网站
  • 怎么评判一个网站做的好与坏专做情侣装网站
  • 网站管理助手v3历史上的今天 网站如何做
  • 网站建设与管理的就业方向网站开发前端模板
  • 对网站建设的维护深圳网络推广推荐
  • wordpress多站共享授权码wordpress数据库缓存插件