由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 突然想到一个关于string matching的题
相关主题
一个code challenge微软电面
问2个string matching的题攒rp整理面试题(1)string match/text search
string matching 需要看KMP 还有其他需要看的吗?查找substr的问题
问一道算法题max length of subsequence string matching subsamazon 两轮电面
还真从来没见过考KMP之类string matching算法的攒人品,twitter电话面经
关于coding面试的问题问道老题
问一道算法题分享2个电面题目
A家电面面经关于KMP里pre-process table的里的fall back
相关话题的讨论汇总
话题: int话题: s1话题: s2话题: hash话题: substring
进入JobHunting版参与讨论
1 (共1页)
H*M
发帖数: 1268
1
s1: abcdefg
s2: dcbe
要你找到一个s1中的一个substring,matches s2,但是,这个substring的顺序不重要,
比如bcde also matches dcbe
KMP,和surfix tree都不可以了。
有没有什么efficient的方法?
大家讨论讨论。好象在哪看过这题。
a*******h
发帖数: 123
2
Simple-minded (m+n)log(m) 够好不? m = |s1|, n = |s2|。直接在 s1 上搞个BST啥
的。

【在 H*M 的大作中提到】
: s1: abcdefg
: s2: dcbe
: 要你找到一个s1中的一个substring,matches s2,但是,这个substring的顺序不重要,
: 比如bcde also matches dcbe
: KMP,和surfix tree都不可以了。
: 有没有什么efficient的方法?
: 大家讨论讨论。好象在哪看过这题。

w********p
发帖数: 948
3
substring 得 字母在s1中是连续的吗?
s1: abcdef
s2: bed
结果是 bde 还是 failed.

【在 H*M 的大作中提到】
: s1: abcdefg
: s2: dcbe
: 要你找到一个s1中的一个substring,matches s2,但是,这个substring的顺序不重要,
: 比如bcde also matches dcbe
: KMP,和surfix tree都不可以了。
: 有没有什么efficient的方法?
: 大家讨论讨论。好象在哪看过这题。

H*M
发帖数: 1268
4
failed.
必须连续
你上次面试怎么样?

【在 w********p 的大作中提到】
: substring 得 字母在s1中是连续的吗?
: s1: abcdef
: s2: bed
: 结果是 bde 还是 failed.

b***e
发帖数: 1419
5
没必要. 给s2建个按字母表的hash, 扫一遍s1就行了.

【在 a*******h 的大作中提到】
: Simple-minded (m+n)log(m) 够好不? m = |s1|, n = |s2|。直接在 s1 上搞个BST啥
: 的。

H*M
发帖数: 1268
6
这个不work吧.是substring,不是sub sequence

【在 b***e 的大作中提到】
: 没必要. 给s2建个按字母表的hash, 扫一遍s1就行了.
w********p
发帖数: 948
7
我本来也是这样想的。 但如果substring 得 字母在s1中要连续的,要加最后一步
在s1中如果被hash的字母不连续, failed.
1. 看所有s2字母和s1中的字母是否有1对1的关系。有的话,mark s2的字母 (hash)
2. 看被 mark 的s1 字母是否连续
不过如果s1,s2 的string有字母重复好像不可以了

【在 b***e 的大作中提到】
: 没必要. 给s2建个按字母表的hash, 扫一遍s1就行了.
w********p
发帖数: 948
8
look at your answer.....not good sign
If I have good news, you will know

【在 H*M 的大作中提到】
: failed.
: 必须连续
: 你上次面试怎么样?

H*M
发帖数: 1268
9
I am really sorry...根本没往那方面想.只是copy你post里的.
I am sensitive to those bad words too...

【在 w********p 的大作中提到】
: look at your answer.....not good sign
: If I have good news, you will know

b***e
发帖数: 1419
10
有重复也没关系. 两个hash, 一个存s2的inverted index, 一个存现在已经找到的. 设
两个指针i, j来traverse s1(j >= i), 多退(i++)少补(j++), 没找到就重新来过. 唯一
tricky的地方就是如果j++多扫进来一个字母, 假设是a, 那么i++要一直repeat直到把上一个a吐出
来. 沿路经过都要吐出去.

【在 w********p 的大作中提到】
: 我本来也是这样想的。 但如果substring 得 字母在s1中要连续的,要加最后一步
: 在s1中如果被hash的字母不连续, failed.
: 1. 看所有s2字母和s1中的字母是否有1对1的关系。有的话,mark s2的字母 (hash)
: 2. 看被 mark 的s1 字母是否连续
: 不过如果s1,s2 的string有字母重复好像不可以了

H*M
发帖数: 1268
11
对阿.按你说的
s1: aeeeefg
s2: dcbe
就 return true了.
如果s1中没有s2的组成字母的dup就可以了,看有没有连续的4个

【在 w********p 的大作中提到】
: 我本来也是这样想的。 但如果substring 得 字母在s1中要连续的,要加最后一步
: 在s1中如果被hash的字母不连续, failed.
: 1. 看所有s2字母和s1中的字母是否有1对1的关系。有的话,mark s2的字母 (hash)
: 2. 看被 mark 的s1 字母是否连续
: 不过如果s1,s2 的string有字母重复好像不可以了

H*M
发帖数: 1268
12
没看懂...

唯一
把上一个a吐出

【在 b***e 的大作中提到】
: 有重复也没关系. 两个hash, 一个存s2的inverted index, 一个存现在已经找到的. 设
: 两个指针i, j来traverse s1(j >= i), 多退(i++)少补(j++), 没找到就重新来过. 唯一
: tricky的地方就是如果j++多扫进来一个字母, 假设是a, 那么i++要一直repeat直到把上一个a吐出
: 来. 沿路经过都要吐出去.

b***e
发帖数: 1419
13
#include "stdio.h"
#include "string.h"
int c2i(char c) {
return c - 'a';
}
int i2c(int i) {
return i + 'a';
}
int* invertedIndex(char* s) {
int len = strlen(s);
int* hash = new int[26];
for (int i = 0; i < 26; i++) {
hash[i] = 0;
}
for (int i = 0; i < len; i++) {
int c = s[i];
hash[c2i(c)] += 1;
}
return hash;
}
void printHash(int* a) {
for (int i = 0; i < 26; i++) {
printf("%i, ", a[i]);
}
}
int patternMatch(char* s1, c
w********p
发帖数: 948
14
还没仔细看程序,先赞一下热情。
1 (共1页)
进入JobHunting版参与讨论
相关主题
关于KMP里pre-process table的里的fall back还真从来没见过考KMP之类string matching算法的
f电面面筋,关于coding面试的问题
有人同看Longest Palindromic Substring 这道题么?问一道算法题
求问FB题目A家电面面经
一个code challenge微软电面
问2个string matching的题攒rp整理面试题(1)string match/text search
string matching 需要看KMP 还有其他需要看的吗?查找substr的问题
问一道算法题max length of subsequence string matching subsamazon 两轮电面
相关话题的讨论汇总
话题: int话题: s1话题: s2话题: hash话题: substring