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 样例解 ...
随机推荐
- LR中获取当前系统时间方法
方法一:使用loadrunner的参数化获取当前时间使用lr的参数化,非常方便,对lr熟悉的各位朋友也能马上上手,时间格式也有很多,可以自由选择.步骤:1.将复制给aa的值参数化2.选中abc,使用右 ...
- a single statement, not multiple statements
http://dev.mysql.com/doc/refman/5.7/en/prepare.html Statement names are not case sensitive. preparab ...
- nodejs 基本类型和语法
写在前面 今天想要查下Node的类型什么的知识,想要总结下,在Googol上看到一个文章,但是原始的链接不在了,在快照中把这篇文章拉出来,如果原作者有问题,请联系我! 该文章都是一些JS的基础,高手自 ...
- PHP 加密 和 解密 方法
关于Discuz的加密解密函数,相信大家都有所了解,该authcode函数可以说是对PHP界作出了重大的贡献,真的发觉discuz这个函数写的太精彩啦. 研究了一下这个算法,总的来说可以归纳为以下三点 ...
- NSURLSession
参考文章1, apple文档 一.NSURLSessionConfiguration 介绍:分别配置每一个 session 对象.(NSURLConnection 很难做到) 分类: 1) defau ...
- javaScript没有块级作用域
1.如下,变量i,j,k 的作用域是相同的. function test(obj){ var i= 0; if(typeof obj == "object"){ var j = 0 ...
- ViewModel命令ICommand对象定义
如果定义如下 public ICommand ViewMenuItemCommand: 那么UI绑定,则无法执行代理方法 需如下定义 public ICommand ViewMenuItemComma ...
- Linux的常用基本命令
Linux的常用基本命令. 首先启动Linux.启动完毕后需要进行用户的登录,选择登陆的用户不同自然权限也不一样,其中“系统管理员”拥有最高权限. 在启动Linux后屏幕出现如下界面显示: …… Re ...
- 七步实现magento迁移
很多朋友都在为magento搬家烦恼,要想把magento从一台服务器迁移到另一台服务器上并不难,下面给大家介绍一种简单方法就能轻松实现magento迁移. 范例:从http://magento.yo ...
- Objdump-查看汇编指令
作用 Objdump可以用来看汇编指令 查看汇编指令 测试文件 编译指令 gcc -g -o objtest 1.8.c objdump -S objtest |more /main 查看结果