leetCode 745. Prefix and Suffix Search的思路
来源:互联网 发布:淘宝网电脑不能登录 编辑:程序博客网 时间:2024/05/30 12:03
这个题目考察的是数据库设计的基本思路。原题目的大意是设计一个数据过滤器,能找到匹配给定前缀和后缀的下标。
最开始写了个无脑的判断前缀和后缀的方法,如下
class WordFilter {public: WordFilter(vector<string> words) { for(int i=0;i<words.size();i++) { // cout<<"w:"<<words[i]<<endl; w.emplace_back(words[i]); } ws =words.size(); } int f(string p, string s) { // cout<<"p:"<<p<<"s:"<<s<<endl; for(int i=ws-1;i>=0;i--) { if(isp(w[i],p) && iss(w[i],s)) { return i; } } return -1; }private: bool isp(string d,string p) { int ds =d.size(); int ps =p.size(); if(ds < ps) return false; for(int i=0;i<p.size();i++) { if(p[i] != d[i]) return false; } return true; } bool iss(string d,string s) { int ss =s.size(); int ds =d.size(); if(ds < ss) return false; for(int i=ss-1;i>=0;i--) { if(s[i] != d[i+ds-ss]) return false; } return true; } int ws; vector<string> w;};
果然TLE了,哈哈,用map存储words就可以搞定了,代码如下:
class WordFilter {public: WordFilter(vector<string> words) { for(int i=0;i<words.size();i++) { string w =words[i]; int ws =w.size(); for(int lp=0;lp<=ws;lp++) { string dp=w.substr(0,lp); for(int ls=0;ls<=ws;ls++) { string ds=w.substr(ws-ls,ls); db[dp+"#"+ds]=i+1; } } } } int f(string prefix, string suffix) { string d(prefix+"#"+suffix); if(db[d] > 0) return db[d]-1; return -1; }private: unordered_map<string,int> db; };
需要注意的是substr和unordered_map的使用,就ok了。
阅读全文
0 0
- leetCode 745. Prefix and Suffix Search的思路
- 745. Prefix and Suffix Search
- 745. Prefix and Suffix Search
- 745. Prefix and Suffix Search
- LWC 62:745. Prefix and Suffix Search
- java web配置prefix suffix的是什么意思
- SpringMVC - 视图解析器的 prefix和suffix
- Table 9-1 -- Bit strings with "prefix" and "suffix" bits and assigment to codeNum rangs
- <trim>: prefix+prefixOverrides+suffix+suffixOverrides
- mybatis prefix,prefixOverrides,suffix,suffixOverrides
- <trim>: prefix+prefixOverrides+suffix+suffixOverrides
- Exam 2 Maximum Xor with Prefix and Suffix - Works Application 16
- poj 2752 KMP的next数组应用(prefix-suffix string)
- LeetCode —— 14. Longest Common Prefix解题思路
- [LeetCode] Add and Search Word
- leetcode--Add and Search Word
- leetCode 33.Search in Rotated Sorted Array(排序旋转数组的查找) 解题思路和方法
- Difference between "Primary DNS Suffix" and "Connection specific DNS Suffix"?
- [Lua]Lua IO库整理
- Go的并发编程简述
- 用栈逆置队列
- JS动态修改页面EasyUI datebox不生效、EasyUI动态添加Class、EasyUI动态渲染解析解决方案
- Ubuntu-Hadoop集群live nodes为0解决方案
- leetCode 745. Prefix and Suffix Search的思路
- html js点击按钮滚动跳转定位到页面指定位置(DIV)的方法代码
- Centos7安装中文输入法
- 中北大学NUC2017新生赛1006/NOJ-1986
- 指令周期
- 由于csdn只能记录编程方面的内容,涉及到产品运营方面的文章,将移步到新浪博客
- oracle--4.单行函数
- Mac 下设置文件夹的隐藏和显示
- jQuery.extend克隆对象实现方法详解