很疑惑,明明代码测试样例输出没问题,提交后的样例点在本地上测试也没问题,但就是通过不了;


在本地vscode上明明能得到正确结果;
思路就是DFS+回溯+哈希;

#include <iostream>
#include <vector>
using namespace std;long hashWord(string s)//对字符串s进行哈希
{long val = 0;int len = s.size();for (int i = 0; i < len; i++){val = val * 26 + s[i] - 'a';}return val;
}bool find(vector<long> &word, int hashVal)//判断某个字符串的哈希值hashVal是否在单词哈希值列表中,即这个字符串是否为单词
{int len = word.size();for (int i = 0; i < len; i++){if (word[i] == hashVal){return true;}}return false;
}void dfs(string &s, int len, int nowP, int &max, int &min, vector<long> &word, string ss, vector<string> &res)
{long hashVal = 0;int count = 0;int endP = nowP;if (endP == len)//边界条件{ss.pop_back();res.push_back(ss);return;}while (endP < len){hashVal = hashVal * 26 + s[endP] - 'a';count++;if (count < min){endP++;continue;}if (count > max)//字符串长度超过单词最大长度,不可能为单词,直接return{return;}if (find(word, hashVal)){string temp =ss+ s.substr(nowP, endP - nowP + 1);temp.push_back(' ');dfs(s, len, endP + 1, max, min, word, temp, res);}endP++;}
}vector<string> wordBreak(string s, vector<string> &wordDict)
{int len1 = s.size();int len2 = wordDict.size();vector<long> word(len2, 0);//hash每个单词并记录最大/小单词长度int max = -1, min = INT32_MAX;for (int i = 0; i < len2; i++){int temp = wordDict[i].size();if (temp > max){max = temp;}if (temp < min){min = temp;}word[i] = hashWord(wordDict[i]);}vector<string> res;dfs(s, len1, 0, max, min, word, "", res);return res;
}int main()
{vector<string> test;test.push_back("apple");test.push_back("pen");test.push_back("applepen");test.push_back("pine");test.push_back("pineapple");string s = "pineapplepenapple";test = wordBreak(s, test);for (string s : test){cout << s << endl;}return 0;
}

Leetcode每日一题:140.word-break-ii(单词拆分)相关推荐

  1. 【DFS + 记忆化递归】LeetCode 140. Word Break II

    LeetCode 140. Word Break II Solution1:我的答案 纯DFS,在第31个case时超时,还是记录一下.. class Solution { // DFS public ...

  2. leetcode 140. Word Break II | 140. 单词拆分 II(动态规划)

    题目 https://leetcode.com/problems/word-break-ii/ 题解 由 leetcode 139. Word Break | 139. 单词拆分(动态规划) 改造而来 ...

  3. leetcode 139. Word Break | 139. 单词拆分(动态规划)

    题目 https://leetcode.com/problems/word-break/ 题解 时隔一天,再次遇到 dp 问题- 本题和 leetcode 375. Guess Number High ...

  4. 140. Word Break II

    文章目录 1 题目理解 2 回溯+记忆化 1 题目理解 140与130的区别是,当字符串可分的时候,要求返回具体的分割字符串. 2 回溯+记忆化 对于字符串s,如果前面一部分是单词列表中的词,则拆分出 ...

  5. LeetCode每日一题 52. N皇后 II

    题目链接 思路 暴搜 二进制 class Solution {public:vector<int> row, col;int totalNQueens(int n) {int ret= 0 ...

  6. LeetCode每日一题 142. 环形链表 II

    题目链接 思路 快慢指针 class Solution {public:ListNode *detectCycle(ListNode *head) {ListNode* l = head;ListNo ...

  7. Leetcode每日一题-学生出勤记录 II(Student Attendance Record II)

    可以用字符串表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤.迟到.到场).记录中只含下面三种字符: 'A':Absent,缺勤 'L':Late,迟到 'P':Present,到场 ...

  8. Leetcode每日一题:52.N-Queens II(N皇后Ⅱ)

    思路:一共有n行n列,放置n个皇后,同行同列同斜对角线都最多只能有一个皇后:相当于从0~n-1行,每一行放一个,把第k行的皇后放在第j列时,检查前面0~k-1行的皇后是否与第k行皇后的位置冲突,若冲突 ...

  9. Leetcode每日一题:290.word-pattern(单词规律)

    思路:hash索引肯定要用的,但这道题我既要让单词对应字符,也要判断这个单词所对应的字符是否已被别的单词对应,所以我用了两个map,方便判断:一个是map<string,char>,一个是 ...

  10. Leetcode每日一题:127.word-ladder(单词接龙)

    思路:树的层次遍历,BFS,注意这里如果用bool数组标记该字符串是否加入过序列,肯定会超时,因为每次都要遍历整个wordList,所以,建议将加入序列的字符串从wordList中删除,勉强过关:DF ...

最新文章

  1. monkey测试_用 Instrumentation 改良 Monkey 工具实战
  2. python程序实例教程基础-Python程序设计实例教程
  3. Flutter 案例学习之:GridView
  4. datatables 展开 折叠_【图说新机】9月折叠屏、屏下摄像头新机同时上市,该怎么选?...
  5. freetype在Linux平台编译小记
  6. java double的加法_java Double 进行加减乘除
  7. @程序员,区块链开发平台避坑指南!
  8. fastunfolding算法_社区发现算法综述—part1
  9. python数据包pandas_python | 数据分析(二)- Pandas数据包
  10. 数字电子技术之逻辑门电路
  11. grads 相关系数_GrADS实习报告6
  12. 木瓜蛋白酶改性金纳米粒修饰淀粉/二氧化硅复合微球/硒化镉/聚苯乙烯荧光二氧化硅微球的研究
  13. ollydbg调试使用
  14. ArcGIS教程 - 1 绪论
  15. 智能爆炸的真实(下)
  16. mysql 索引失效的7种情况
  17. linux第一周作业
  18. GSM多时隙NV配置
  19. 二维数组名取地址加一
  20. 转载:关于 PHP 5.4 你所需要知道的

热门文章

  1. java监听器演示样例
  2. 验证控件jQuery Validation Engine调用外部函数验证
  3. xcode cocos2dx 3.x mac工程 当assert(cond)触发断点,但cond却为0
  4. layui表格——table.render(options)(转)
  5. vs2017 EFCore 迁移数据库命令
  6. [原创]java WEB学习笔记54:Struts2学习之路--- 编写Struts2 的第一个程序,HelloWord,简述 package ,action,result...
  7. js中数组的一些操作
  8. 织梦dedecms系统调用跨站跨数据库数据显示
  9. 设计模式 笔记 解释器模式 Interpreter
  10. 带有天气预报的高大上web报表制作分享