由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问到题
相关主题
专家们,find the longest common substring of two stringsamazon 第一轮电话面试
一个基本的string问题回馈本版,贴GOOGLE电话面经
一周多了。。。等的太不淡定了。。。 说两个面经吧One Phone Interview Problem
请问一个题目关于anagram的老题?
一道string matching的题目面试题目: 有2个字符串,消除第一个字符串中第二个字符串包含的所有字母。 例如: string1: helloworld string2: abcdef output: hlloworld 面
g电面请教一道leetcode的题目
Amazon[轉載]amazon online test面经,现在真变态,开摄像头,考gre逻辑。
给一个大俗之一的面经吧。几道微软面试题
相关话题的讨论汇总
话题: index话题: string话题: int话题: s2
进入JobHunting版参与讨论
1 (共1页)
p*****2
发帖数: 21240
1
刚被问到的,答的比较乱,用的recursion解决的。
两个string,string1是个regular string,
string2 contains one or more '*', each '*' represents 1 or more characters
write a function to find the pattern of string2 in string1, return index.
y*******g
发帖数: 6599
2
只要求返回第一个吗?
把string2 按* break成list of string 然后按顺序
p*****2
发帖数: 21240
3

只需要返回第一个match的index。×可以代表至少一个character。
如果中间很多个×连着怎么办?

【在 y*******g 的大作中提到】
: 只要求返回第一个吗?
: 把string2 按* break成list of string 然后按顺序

y*******g
发帖数: 6599
4
连续n个X就至少跳过n在找下一个。
int match(string s1, string s2) {
vector vs;
int p = 0;
int q = 0;
//break s2 to segements
while(true) {
q++;
if(q == s2.size()) {
vs.push_back(s2.substr(p,q-p));
break;
}
if((s2[p] == '*') ^ (s2[q] == '*')) {
vs.push_back(s2.substr(p,q-p));
p = q;
}
}
int index = 0; //to be returned;
int currentIndex = 0;
for(int i=0, n = vs.size(), limit = s1.size(); i string item = vs[i];
if(item[0] == '*') {
currentIndex += item.length();
if(currentIndex >= limit) {
index = -1;
break; //some * at tail
}
} else {
currentIndex = s1.find(item,currentIndex);
if(currentIndex == -1) {
index = -1; //not found;
break;
}
if(i == 0) {
index = currentIndex;
}
currentIndex += item.length();
}
}
return index;
}

【在 p*****2 的大作中提到】
:
: 只需要返回第一个match的index。×可以代表至少一个character。
: 如果中间很多个×连着怎么办?

p*****2
发帖数: 21240
5
多谢。
H****s
发帖数: 247
6
赞这个解答!
这题只要在string1中找到vs[0]的index, 剩下的就是验证而已, 要么 index valid,
要么不valid.

【在 y*******g 的大作中提到】
: 连续n个X就至少跳过n在找下一个。
: int match(string s1, string s2) {
: vector vs;
: int p = 0;
: int q = 0;
: //break s2 to segements
: while(true) {
: q++;
: if(q == s2.size()) {
: vs.push_back(s2.substr(p,q-p));

g**********y
发帖数: 14569
7
不能这么干,考虑aabc和a*abc。
这个要用状态机或者recursive来做。

【在 y*******g 的大作中提到】
: 连续n个X就至少跳过n在找下一个。
: int match(string s1, string s2) {
: vector vs;
: int p = 0;
: int q = 0;
: //break s2 to segements
: while(true) {
: q++;
: if(q == s2.size()) {
: vs.push_back(s2.substr(p,q-p));

y*******g
发帖数: 6599
8
aabc和a*abc本来就不match啊, 因为遇到*就跳过了,从b开始找 abc。

【在 g**********y 的大作中提到】
: 不能这么干,考虑aabc和a*abc。
: 这个要用状态机或者recursive来做。

c********1
发帖数: 52
9
原题的意思有不用理解吧
each '*' represents 1 or more characters
*可以match a,aa,aaa
但是可以match ab吗
上面那个贴的代码是假设可以match的
g**********y
发帖数: 14569
10
你在Java里试一试:
System.out.println("aabc".matches("a*abc"));

【在 y*******g 的大作中提到】
: aabc和a*abc本来就不match啊, 因为遇到*就跳过了,从b开始找 abc。
y*******g
发帖数: 6599
11
java是regex, lz问的不是这个意思

【在 g**********y 的大作中提到】
: 你在Java里试一试:
: System.out.println("aabc".matches("a*abc"));

C*********1
发帖数: 6
12
我还以为题目是说*表示它前面的character可以出现1次或多次呢, 就是有点类似
regular expression里那样的, 这样的话, aabc和a*abc 应该是match的啊。
1 (共1页)
进入JobHunting版参与讨论
相关主题
几道微软面试题一道string matching的题目
一个答案看不明白谁解释一下g电面
Permutation leetcode-Amazon
关于wildcard match和regex match的一个问题给一个大俗之一的面经吧。
专家们,find the longest common substring of two stringsamazon 第一轮电话面试
一个基本的string问题回馈本版,贴GOOGLE电话面经
一周多了。。。等的太不淡定了。。。 说两个面经吧One Phone Interview Problem
请问一个题目关于anagram的老题?
相关话题的讨论汇总
话题: index话题: string话题: int话题: s2