![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
拥抱新生活
怀揣着对未来世界美好的憧憬,从容燃烧
展开
-
如何设计一个数据结构
引言这几天,刷题碰到了好多需要自己设计数据结构的题目,优化存储,提升方法效率,主要是访问和修改 比如,字符串的查找用字典树,TrieNode,节点树,每个char都是一个leaf。 很多时候,我们常用vector,queue,stack,map,set 使用不需要排序的map,set,使用unordered_map, unordered_set, 前者内部机制红黑树,后者hash这是我们在教材原创 2016-10-21 21:52:14 · 6913 阅读 · 0 评论 -
string KMP算法理解
int KMP_find(string s, string pattren,int begin=0) //begin表示开始下标 { vectornext = KMP_next(pattren); //得到next数组 int i = begin; int j = 0; while (i < s.size()&&j<pattren.size()) { while (原创 2016-10-17 15:34:58 · 294 阅读 · 0 评论 -
算法:全排列
void getFullPerMutation(vector<string>&res, string&p,int begin) { int len = p.size(); if (begin >= len) { res.push_back(p); return; }原创 2016-10-27 22:15:44 · 178 阅读 · 0 评论 -
leetcode: Find All Anagrams in a String
class Solution {public: vector<int> KMP_next(string match) { vector<int>next(match.size()); next[0] = -1; int j = 0, k = -1; while (j<match.size() - 1)原创 2016-10-28 10:59:16 · 239 阅读 · 0 评论 -
leetcode:string hard系列三:word break
https://leetcode.com/problems/word-break/https://leetcode.com/problems/word-break-ii/class Solution {public: vector wordBreak(string s, unordered_set& wordDict) { vector原创 2016-10-18 22:30:27 · 365 阅读 · 0 评论 -
leetcode:string hard系列二:word ladder
问题描述:word ladderIIIword breakword search原创 2016-10-17 22:27:53 · 390 阅读 · 0 评论 -
复杂情况下string翻转
把一个句子以单词为最小单位的翻转 考察点在于:在原来句子中,可能存在任意插入的空格,预处理删除这些空格代码class Solution {public: void reverseWords(string &s) { tackleSpace(s); reverse(s.begin(), s.end()); //整体翻转 int index原创 2016-10-20 21:10:00 · 183 阅读 · 0 评论 -
TrieNode 字典树
这个题目可以很好地看做字典树在字符串搜索中的运用,在查找的过程中,为了匹配‘.’能够代替任一字符,结合使用了BFSstruct TrieNode2{ TrieNode2* next[26]; bool isFinished; //用于标记,string的结束 TrieNode2() { isFinished = false; for原创 2016-10-20 22:24:45 · 1153 阅读 · 0 评论