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

139. 单词拆分

题目:

在这里插入图片描述

思考:

  1. 其实最先想到的是前缀树
  2. 前缀树难就难在怎么回溯
  3. 代码需要优化

实现:

class PreTree
{
private:PreTree* next[26];bool isEnd;public:PreTree(){isEnd = false;for (int i = 0; i < 26; i++){next[i] = nullptr;}}void insert(string word){PreTree* cur = this;for (int i = 0; i < word.size(); i++){if (cur->next[word[i] - 'a'] == nullptr){cur->next[word[i] - 'a'] = new PreTree();}cur = cur->next[word[i] - 'a'];}cur->isEnd = true;}bool search(string word){bool word_end=false;int end_pos=0;bool flag = true;PreTree* cur = this;for (int i = 0; i < word.size(); i++){if ((cur->next[word[i] - 'a'] == nullptr))    {if (!cur->isEnd){if (word_end){i=end_pos;word_end = false;}else{flag= false;break;}}cur = this;i--;}else{if (cur->isEnd){word_end = true;end_pos = i;}cur = cur->next[word[i] - 'a'];}if (i==word.size()-1){if (!cur->isEnd){if (word_end){cur=this;i=end_pos-1;word_end=false;}else{flag=false;}}}}return flag;}
};class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {PreTree* root = new PreTree();for (auto word:wordDict){root->insert(word);}return root->search(s);}
};

解释:

  1. 前缀树建树过程不赘述
  2. 需要额外注意访问到的前缀树的前缀中是否包含了一个完整的单词:比如{“a”,“aaa”},当前缀树走到aa时注意已经包含了一个完整的“单词(word)”:“a”。这种情况需要额外讨论以及回溯,因为查询aa时,前缀树给出的结果是aa不是一个完整词,但其实aa可以用两个“a”单词组成,这种情况得回溯到前缀树的“a”单词,同样的,s的访问也需要回到相应的位置。

相关文章:

  • 鸿蒙运动开发实战:打造专属运动视频播放器
  • 【2】Redis 缓存击穿原理和解决方案
  • 制作微PE U盘后电脑多出300M盘符(EFI分区)无法隐藏的解决过程
  • [VSCode] VSCode 设置 python 的编译器
  • LangGraph--Agent常见的模式1(增强型,提示链)
  • 高效开发REST API:Django REST Framework序列化器深度指南
  • macbook配置vscode连接腾讯云服务器
  • springboot测试类原理
  • 掌握这些 Python 函数,让你的代码更简洁优雅
  • 《深度剖析:SCSS中混入(Mixin)为浏览器前缀赋能》
  • Photoshop矢量蒙版全教程
  • Spark核心概念与DAG执行原理笔记
  • 中国风系列简约淡雅通用PPT模版分享
  • Spring Boot 实训项目 - 图书信息网站
  • 鸿蒙Next仓颉语言开发实战教程:设置页面
  • 【系统设计【2】】粗略估算
  • @SpringBootTest 详解
  • langChainv0.3学习笔记(中级篇)
  • 基于PPSO与BP神经网络回归模型的特征选择实战(Python实现)
  • AndroidStudio下载的SDK没有tool目录,或者想要使用uiautomatorviewer工具
  • 给企业做网站的业务员/怎么推广app
  • 徐州网站建设找哪家好/优化人员配置
  • 厦门网站设计大概多少钱/武汉seo结算
  • 网站优化怎样做外链/网络营销经典案例
  • 网站制作上海/百度推广助手客户端
  • 网站建设的本质/青岛seo计费