F面经prepare:strstr变种
* Given an integer k>=1 and two strings A and B (length ~n each);
* Figure out if there is any common substring of length at least k.
* (i.e. any string of length at least k, that is a substring of both A and B)
*
* A="facebook", B="bookshelf", k=3 ==> true
^^^ ^^^
* A="facebook", B="bookshelf", k=4 ==> true
^^^^ ^^^^
* A="facebook", B="bookshelf", k=5 ==> false
public boolean check(String A, String B, int k) {
int lenA = A.length();
int lenB = B.length();
for (int i=0; i<=lenA-k; i++) {
String stra = A.substring(i, i+k);
for (int j=0; j<=lenB-k; j++) {
String strb = B.substring(j,j+k);
if (stra.equals(strb)) return true;
}
}
return false;
}
follow up: How to optimize?
想到KMP了,trie了,居然没有想到HashSet,然后KMP和trie的时间复杂度又没有搞太对
他们真的很喜欢问时间复杂度,空间复杂度,时间换空间,空间换时间
public boolean check(String A, String B, int k) {
//store B's substring of length k to hashSet
HashSet<String> set = new HashSet<String>();
for (int i=0; i<B.length()-k; i++) {
set.add(B.substring(i, i+k));
}
for (int i=0; i<A.length()-k; i++) {
String sbstra = A.substring(i, i+k);
if (B.contains(sbstra)) return true;
}
return false;
}
这道题一点都不难,只是
1.受以前思维定式影响
2. 考场真的是思路就很局限, 放不开
3. 这道题面经还见过,别人提到过set,没细看,恰好这个方法忘记了
4. 考场写的时候,真的是连for(int i=0; i<=A.length()-k; i++) 这个是不是A.length()-k都想不清楚
应对:
1.重视面经。看过做过会占很大便宜
2. 要加强时间复杂度,空间复杂度训练
3. 要加强思维敏捷度训练
4. 写code能力(比如这次A.length()-k)
F面经prepare:strstr变种的更多相关文章
- xtrabackup 使用说明(续)
背景: 关于物理备份工具xtrabackup的一些说明可以先看之前写过的文章说明:xtrabackup 安装使用.现在xtrabackup版本升级到了2.4.4,相比之前的2.1有了比较大的变化:in ...
- 使用 Python 进行稳定可靠的文件操作
程序需要更新文件.虽然大部分程序员知道在执行I/O的时候会发生不可预期的事情,但是我经常看到一些异常幼稚的代码.在本文中,我想要分享一些如何在Python代码中改善I/O可靠性的见解. 考虑下述Pyt ...
- 寒冰王座[HDU1248]
寒冰王座 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- android 录音的断点续传
系统没有暂停的功能 只能把每次的录音进行拼接... package com.example.zrecord; import java.io.File;import java.io.FileInput ...
- SDOI2016 R1 解题报告 bzoj4513~bzoj4518
储能表 将n, m分解为二进制,考虑一个log(n)层的trie树,n会在这颗trie树上走出了一个路径,因为 行数 $ \le n$,所以在n的二进制路径上,每次往1走的时候,与m计算贡献,m同样处 ...
- poj 3744 Scout (Another) YYF I - 概率与期望 - 动态规划 - 矩阵快速幂
(Another) YYF is a couragous scout. Now he is on a dangerous mission which is to penetrate into th ...
- Mysql备份之Innobakcupex&Xtrabackup
一.innobackupex备份工具 基本选项 --compress:该选项表示压缩innodb数据文件的备份. --compress-threads:该选项表示 ...
- Uva 1378 - A Funny Stone Game
1378 - A Funny Stone Game Time limit: 3.000 seconds The funny stone game is coming. There are n pile ...
- loj #6235. 区间素数个数
#6235. 区间素数个数 题目描述 求 1∼n 1\sim n1∼n 之间素数个数. 输入格式 一行一个数 n nn . 输出格式 一行一个数,表示答案. 样例 样例输入 10 样例输出 4 样例解 ...
随机推荐
- faker image
$faker->image http://placehold.it http://placekitten.com/g/200/300 带文字 https://placeholdit.imgix. ...
- 6月辞职->帝都生活
---恢复内容开始--- 5月初送走了静,有点伤心,但还是忍住没哭. 纠结了一下上哪个班,上不上基础班,不能再拖了,果断交钱报6月份的ios基础班.之前还有个电话面试,怕怕的,考了很多函数的知识,好多 ...
- ATT 汇编语法
在研华的pc104上使用看门狗要使用汇编.使用汇编来修改CMOS里面的参数.也就是内联汇编.linux下gcc只支持ATT汇编.所以这儿有必要将ATT语法学习学习.以后需要的时候翻出来温习温习. ...
- excel15个技巧
自动定时保存Excel中的文件 点击“工具”菜单“自动保存”项,设置自动保存文件夹的间隔时间.如果在“工具”菜单下没有“自动保存”菜单项,那么执行“工具”菜单下“加载宏…”选上“自动保存”,“确定”. ...
- Redis学习二 C#中如何进行这五种数据类型的操作
我在网上找了好久,就是没有找到Redis和C#结合的书,都是和别的编程语言在一起鬼混. 简单的用C#实现向Redis中插入那我中类型的数据 首先需要到NuGet 里面下载 Redis IDatabas ...
- 使用JetBrains dotMemory 4.0分析内存
安装下载地址:http://www.jetbrains.com/profiler/ 1.在本地启动web应用后,打开dotMemory,附加进程 2.附加后会看到集中颜色得粗条,不断往左边走动,这是内 ...
- Qt之窗体拖拽、自适应分辨率、自适应大小 good
Qt之自定义界面(实现无边框.可移动) Qt之自定义界面(窗体缩放-跨平台终极版) Qt之自定义界面(窗体缩放) http://blog.csdn.net/liang19890820/article/ ...
- Cocos2d-JS目录说明
frameworks---- 引擎所在,包含两个文件夹cocos2d-html5 和js-bindings.前者是html5引擎,后者是-x的引擎,外部接口是js写,但基础模块却是cpp来实现. sa ...
- Wall---hdu1348(求凸包周长 模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1348 求凸包周长+2*PI*L: #include <stdio.h> #include ...
- java中String.valueOf()和toString()方法的区别
http://www.ztyhome.com/android-tostring-string-valueof-diff/