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

帮企业建设网站销售网站架构分析工具

帮企业建设网站销售,网站架构分析工具,做网站的集团,云南省做网站开发的公司排名文章目录 添加与搜索单词 - 数据结构设计思路一思路二 添加与搜索单词 - 数据结构设计 请你设计一个数据结构#xff0c;支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配 。 实现词典类 WordDictionary #xff1a; ● WordDictionary() 初始化词典对象 ● voi… 文章目录 添加与搜索单词 - 数据结构设计思路一思路二 添加与搜索单词 - 数据结构设计 请你设计一个数据结构支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配 。 实现词典类 WordDictionary ● WordDictionary() 初始化词典对象 ● void addWord(word) 将 word 添加到数据结构中之后可以对它进行匹配 ● bool search(word) 如果数据结构中存在字符串与 word 匹配则返回 true 否则返回 false 。word 中可能包含一些 ‘.’ 每个 . 都可以表示任何一个字母。 输入 [WordDictionary,addWord,addWord,addWord,search,search,search,search] [[],[bad],[dad],[mad],[pad],[bad],[.ad],[b..]] 输出 [null,null,null,null,false,true,true,true]解释 WordDictionary wordDictionary new WordDictionary(); wordDictionary.addWord(bad); wordDictionary.addWord(dad); wordDictionary.addWord(mad); wordDictionary.search(pad); // 返回 False wordDictionary.search(bad); // 返回 True wordDictionary.search(.ad); // 返回 True wordDictionary.search(b..); // 返回 True思路一 var WordDictionary function() {this.root {}; };/** * param {string} word* return {void}*/ WordDictionary.prototype.addWord function(word) {let node this.root;for (let char of word) {if (!node[char]) {node[char] {};}node node[char];}node.isWord true; };/** * param {string} word* return {boolean}*/ WordDictionary.prototype.search function(word) {return this.dfs(this.root, word, 0); };WordDictionary.prototype.dfs function(node, word, index) {const char word[index];if (index word.length) {return node.isWord true;}if (char ! .) {if (node[char] this.dfs(node[char], word, index 1)) {return true;}} else {for (let childChar in node) {if (childChar ! isWord this.dfs(node[childChar], word, index 1)) {return true;}}}return false; };讲解 WordDictionary 构造函数 初始化 Trie 结构WordDictionary构造函数初始化一个空的字典树根节点是一个空对象{}用于后续插入和搜索操作。 addWord 方法 遍历单词遍历给定的单词word的每一个字符char从根节点开始。插入字符到 Trie对于每一个字符如果当前节点没有对应的子节点则创建一个新的子节点。然后将当前节点更新为这个子节点继续处理下一个字符。标记单词结束当所有字符都处理完毕后将最后一个节点的isWord属性设为true表示一个单词的结束。 search 方法 调用 DFS 方法search方法接收一个可能包含通配符.的单词然后调用dfs方法从根节点开始进行深度优先搜索。处理字符对于每个字符如果字符不是通配符.则检查当前节点是否有对应的子节点如果有则递归调用dfs继续搜索如果没有则返回false。处理通配符如果遇到通配符.则遍历当前节点的所有子节点递归调用dfs方法进行搜索如果在任一子节点的搜索中返回true则立即返回true。 dfs 方法 结束条件如果当前索引index等于输入单词的长度说明已经遍历完所有字符此时如果当前节点的isWord属性为true则返回true表示找到匹配的单词。非通配符处理如果当前字符不是通配符.检查当前节点是否有对应的子节点如果有则递归调用dfs方法继续搜索否则返回false。通配符处理如果当前字符是通配符.遍历当前节点的所有子节点除了isWord属性对每个子节点递归调用dfs方法进行搜索如果在任一子节点的搜索中返回true则立即返回true。 思路二 class TrieNode {constructor() {this.children {};this.isEndOfWord false;} }class WordDictionary {constructor() {this.root new TrieNode();}// 添加单词addWord(word) {let node this.root;for (let char of word) {if (!node.children[char]) {node.children[char] new TrieNode();}node node.children[char];}node.isEndOfWord true; // 标记单词的结束}// 搜索单词search(word) {return this._searchInNode(word, this.root);}// 递归搜索函数_searchInNode(word, node) {for (let i 0; i word.length; i) {const char word[i];if (char .) {// 如果是 ., 遍历所有子节点for (let child in node.children) {if (this._searchInNode(word.slice(i 1), node.children[child])) {return true;}}return false; // 如果没有匹配的子节点} else {// 如果不是 ., 直接查找子节点if (!node.children[char]) {return false; // 如果没有这个字符返回 false}node node.children[char];}}return node.isEndOfWord; // 返回是否是一个完整单词} }讲解 TrieNode 类 children一个对象用于存储当前节点的所有子节点。每个子节点的键是字符值是对应的 TrieNode 实例。isEndOfWord一个布尔值标记当前节点是否是一个完整单词的结束。若为 true则表示从根节点到该节点的路径形成了一个完整的单词。 WordDictionary 类 constructor()初始化 WordDictionary 类时创建一个根节点 this.root所有单词都将从这个节点开始构建。 addWord() 方法 这个方法用于将一个新单词添加到字典中。从根节点开始遍历单词的每个字符。如果当前字符的子节点不存在则创建一个新的 TrieNode。移动到当前字符的子节点继续处理下一个字符。最后将最后一个节点的 isEndOfWord 属性设置为 true表示这个节点是一个完整单词的结束。 search() 方法 这个方法用于查找字典中是否存在与给定字符串匹配的单词。它调用 _searchInNode 方法来执行实际的搜索操作。 _searchInNode() 递归搜索 这个方法是递归的核心部分负责在 Trie 中查找与给定字符串匹配的单词。遍历 word 的每个字符。如果字符是 “ . ”则需要检查当前节点的所有子节点 对每个子节点递归调用 _searchInNode 方法传入剩余的字符串从 i 1 开始。如果在任何一个子节点中找到了匹配返回 true。如果所有子节点都没有找到匹配返回 false。 如果字符不是 “ . ”则直接查找当前字符对应的子节点 如果子节点不存在返回 false。如果子节点存在移动到该子节点继续处理下一个字符。 最后检查当前节点的 isEndOfWord 属性返回它的值表示是否找到了一个完整的单词。
http://www.dnsts.com.cn/news/219190.html

相关文章:

  • 手机做网站的软件个人 可以做网站备案吗
  • 保定建行网站首页登录装修房子的app软件哪个好
  • readme.md做网站宁波seo网络推广代理价格
  • 农庄网站模板恩施哪里有做网站的
  • 中国招投标网站官网永川集团网站建设
  • 能免费做网站吗济南网站制作经验
  • 雄安网站制作多少钱梧州网站开发
  • 有没有男女做那个的网站北京网站开发需要多少钱
  • 海安县建设局网站网站服务器数据迁移
  • 网站建设与网络营销网站开发视频教程百度网盘
  • 陕西省城乡住房和建设厅网站阿里巴巴国际站买家入口
  • 网站开发好做吗顺企网查企业
  • wordpress后台太卡亚马逊seo是什么
  • 哪些网站用python做的公众号平台注册
  • 建筑八大员报名网站深圳代理记账多少钱
  • 嘉定网站开发网站文件夹目录结构
  • 网站基础建设和管理郑州网站设计公司排名
  • 省级建设网站全国职业生涯规划大赛
  • 昆明网站建设推广优化莱芜网络推广渠道
  • 帝国做的网站根目录电影视频网站源码
  • 百度刷自己网站的关键词厦门网站建设开发
  • 挖掘关键词爱站网广告策划方案怎么做
  • 天津艺匠做网站手机网站客户端
  • 平邑建设局网站首页百度seo软件曝光行者seo
  • 用rem做移动网站网站建设选择什么模式
  • 网站vip怎么做适合网站设计的gif图片
  • 人人建站网wordpress 景点模板
  • 12380网站的建设情况网页制作流程包括哪些
  • 网站栏目php中做购物网站的教程
  • 外贸论坛网站有哪些重庆市任免干部