s*********d 发帖数: 2406 | 1 没什么说的,自己没准备好。新近IPO 公司
电面挂了,阿三面的但是很nice
1. 从1-100 ,3的倍数输出yes 5的倍数输出no
同时满足 输出yes no 同一行。
简单写出算法,结果他要最少最简洁的if判断我只能做出3个,还能有更简洁的吗?
or 我没理解他的意思。
int x=3*5 ;
if (vale%x==0 ) {
System.out.println(yes+no) ;
} else if (vale%3==0) {
{
System.out.println(yes) ;
} else if (vale%5==0) {
System.out.println(no) ;
}
他说这样acceptable。
说出test case。
2.这题彻底搞挂了。但是个人觉得出的很好
有一个 string 存了magazine杂志上的word
一个string 存word,判断 word在不在magazine 里
boolean findword(String magazine , String word)
我已开始用A[256]字母,之后他强调是word。
我提出hashmap,他说不够好。最后我说用 Trie
俺又彻底忘了函数。
结果 后来没时间了,他说用hashmap 比较快完成
就用hashmap。
写的过程中,他强调,magazine 中的 word 用空格分开。
我的先取出来。
我彻底忘了用 regular exp来分
只能用char[] 来分。
他就说算了。
写hashmap的时候又把基本函数给忘了。只能写出近似的函数名。
完成了之后,写test case
这道题好的地方,可以考hashmap 也可以考 trie,还考了reg exp 个人觉得不错。
反正经验教训。
本来开头聊经历聊得很好的。哎,一开始都是impressive。 |
x*****s 发帖数: 125 | 2 for (int i = 1; i <= 100; ++i) {
if ( value % 3 == 0) {
System.out.print(yes);
}
if ( value % 5 == 0) {
System.out.print(no);
}
System.out.println();
} |
a***w 发帖数: 168 | 3 第二题难道不是直接用 String.split就可以把magzine给tokenize了么
【在 s*********d 的大作中提到】 : 没什么说的,自己没准备好。新近IPO 公司 : 电面挂了,阿三面的但是很nice : 1. 从1-100 ,3的倍数输出yes 5的倍数输出no : 同时满足 输出yes no 同一行。 : 简单写出算法,结果他要最少最简洁的if判断我只能做出3个,还能有更简洁的吗? : or 我没理解他的意思。 : int x=3*5 ; : if (vale%x==0 ) { : System.out.println(yes+no) ; : } else if (vale%3==0) {
|
u*****o 发帖数: 1224 | 4 为啥必须要用REGULAR EXPRESSION啊?用ISSPACE(char)不就分开了吗?
【在 s*********d 的大作中提到】 : 没什么说的,自己没准备好。新近IPO 公司 : 电面挂了,阿三面的但是很nice : 1. 从1-100 ,3的倍数输出yes 5的倍数输出no : 同时满足 输出yes no 同一行。 : 简单写出算法,结果他要最少最简洁的if判断我只能做出3个,还能有更简洁的吗? : or 我没理解他的意思。 : int x=3*5 ; : if (vale%x==0 ) { : System.out.println(yes+no) ; : } else if (vale%3==0) {
|
l*****i 发帖数: 84 | 5 一直不明白,电面不是只是打电话吗?如何写代码答题啊??光凭脑子想象吗? |
s*********d 发帖数: 2406 | 6 当时有点傻掉了
哎,我每次面试都这样。
老想着 regular 的东西了
【在 u*****o 的大作中提到】 : 为啥必须要用REGULAR EXPRESSION啊?用ISSPACE(char)不就分开了吗?
|
z****e 发帖数: 54598 | 7 if(x%3==0) System.out.print("yes");
if(x%5==0) System.out.print("no");
System.out.println(""); |
z****e 发帖数: 54598 | 8 第二个用hashset比较好过hashmap
不过底层是一个东西,但是比较好写
contains比containsKey少几个字母 |
u*****o 发帖数: 1224 | 9 没关系啦LZ,我心里素质也不好,面试不如平时的水平好,就使劲练不放弃,
一起加油吧
【在 s*********d 的大作中提到】 : 没什么说的,自己没准备好。新近IPO 公司 : 电面挂了,阿三面的但是很nice : 1. 从1-100 ,3的倍数输出yes 5的倍数输出no : 同时满足 输出yes no 同一行。 : 简单写出算法,结果他要最少最简洁的if判断我只能做出3个,还能有更简洁的吗? : or 我没理解他的意思。 : int x=3*5 ; : if (vale%x==0 ) { : System.out.println(yes+no) ; : } else if (vale%3==0) {
|
w****h 发帖数: 15 | 10 1. 分别输出循环总次数最少。判断最少。
int i;
for ( i=1; i<=100; i*=3)
System.out.println("yes");
for ( i =1; i<=100; i*=5)
System.out.println("no");
for( i =1; i <= 100; i*=15)
System.out.println("yes no"); |
|
|
a*****u 发帖数: 1712 | 11 有一个 string 存了magazine杂志上的word
一个string 存word,判断 word在不在magazine 里
boolean findword(String magazine , String word)
你这个题目的point不是啥regular expression,想把magazine分成word,split就好了
,根本不应该用精力在这里的。
是想考察你会不会用hashset,然后问你时间空间复杂度。
完后有时间,估计想问你,如果magazine很大,你怎么解决。在这里,才轮到trie什么
的,trie只是方法之一,你还可以说别的。 |
n*****a 发帖数: 55 | 12 这个有bug吧
【在 w****h 的大作中提到】 : 1. 分别输出循环总次数最少。判断最少。 : int i; : for ( i=1; i<=100; i*=3) : System.out.println("yes"); : for ( i =1; i<=100; i*=5) : System.out.println("no"); : for( i =1; i <= 100; i*=15) : System.out.println("yes no");
|
c********p 发帖数: 1969 | |
f********r 发帖数: 27 | |
a*****u 发帖数: 1712 | 15 I don't think so
【在 f********r 的大作中提到】 : 是不是想让你说kmp啊。。
|
s*********d 发帖数: 2406 | 16 这个不能用hashset 吧
同个word 有重复的, 你要统计数量
比如 : magazine : a b c c d p
randomword: adcc
【在 a*****u 的大作中提到】 : I don't think so
|
s*********d 发帖数: 2406 | 17 更新
public boolean findword(String randomletter, String magazine) {
HashMap magaword=new HashMap() ;
String[] words=magazine.split("\ ") ;
for (String word:words){
if (!magaword.containsKey(word)){
magaword.put(word,1) ;
} else {
int cout= magaword.get(word);
cout++ ;
magaword.put(word, cout) ;
}
}
String[] radoml=randomletter.split("\ ") ;
for (String word: radoml){
if (!magaword.containsKey(word)){
return false ;
} else {
int count=magaword.get(word);
if (count<=0) return false ;
else {
count-- ;
magaword.put(word, count) ;
}
}
}
return true ;
} |
f********r 发帖数: 27 | 18 why?面试官不是说hashmap不够好吗?。。
I don't think so
【在 a*****u 的大作中提到】 : I don't think so
|
J****3 发帖数: 427 | 19 为啥KMP不行啊 感觉就是模式匹配啊
【在 a*****u 的大作中提到】 : I don't think so
|
r*******e 发帖数: 7583 | 20 你这个写的是ransom note了
原题就是简单的dict lookup吧
【在 s*********d 的大作中提到】 : 更新 : public boolean findword(String randomletter, String magazine) { : : HashMap magaword=new HashMap() ; : String[] words=magazine.split("\ ") ; : for (String word:words){ : if (!magaword.containsKey(word)){ : magaword.put(word,1) ; : } else { : int cout= magaword.get(word);
|
|
|
h******s 发帖数: 86 | 21 好像是耶
【在 n*****a 的大作中提到】 : 这个有bug吧
|
p*****2 发帖数: 21240 | 22
感觉KMP应该可以呀。内存占用少多了。不过你需要判断前后要是空格或者起点,终点
吧。感觉不是这题考察的目的。
【在 J****3 的大作中提到】 : 为啥KMP不行啊 感觉就是模式匹配啊
|
s*********d 发帖数: 2406 | 23 我详细说原题是
绑架的人,都会选letter from magazine 来写勒索信
你要判断letter 里边所有的 word 都在 某个magazine 出现过。而且次数要少于or等
于magazine的出现的次数。
【在 r*******e 的大作中提到】 : 你这个写的是ransom note了 : 原题就是简单的dict lookup吧
|
J****3 发帖数: 427 | 24 这样的话确实是hash_table啊 遍历letter里的所有charac 存进hashtable里 再去
magzine里去查?
【在 s*********d 的大作中提到】 : 我详细说原题是 : 绑架的人,都会选letter from magazine 来写勒索信 : 你要判断letter 里边所有的 word 都在 某个magazine 出现过。而且次数要少于or等 : 于magazine的出现的次数。
|
J****3 发帖数: 427 | 25 恩恩 二爷说的是。如果这题确实是考察模式匹配, 二爷你觉得用KMP还是RK还是别的
?个人感觉RK比较容易实现点
【在 p*****2 的大作中提到】 : : 感觉KMP应该可以呀。内存占用少多了。不过你需要判断前后要是空格或者起点,终点 : 吧。感觉不是这题考察的目的。
|
l*****s 发帖数: 279 | 26 Does it work for Problem 1? No if at all. But there is a switch.
int[] n = new int[100];
int i = 2;
while (i < 100) {
n[i] = 3;
i += 3;
}
i = 4;
while (i < 100) {
n[i] += 5;
i += 5;
}
for (i=0; i<100; i++) {
switch (n[i]){
case 3:
System.out.println("yes");
break;
case 5:
System.out.println("no");
break;
case 8:
System.out.println("yes no");
break;
}
} |
p*****2 发帖数: 21240 | 27
我觉得两个都提一下吧。看面试官想让你写哪个?
【在 J****3 的大作中提到】 : 恩恩 二爷说的是。如果这题确实是考察模式匹配, 二爷你觉得用KMP还是RK还是别的 : ?个人感觉RK比较容易实现点
|
s*********d 发帖数: 2406 | 28 怎么是 hash_table.
他一开始的 example 是maga a b c d a
random a c
我说 用letter A[256]
他马上说
用 maga alpha beta beta。。。。 这种
random alpha beta。
我的理解, hashtable 是判断有没有 include 没有判断出现次数
当然你可以加上 array 来 判断。
【在 J****3 的大作中提到】 : 这样的话确实是hash_table啊 遍历letter里的所有charac 存进hashtable里 再去 : magzine里去查?
|
p*****2 发帖数: 21240 | 29
你能不能给个例子?我都没看懂倒是是搞什么。如果你能给个输入,输出例子最好了。
【在 s*********d 的大作中提到】 : 怎么是 hash_table. : 他一开始的 example 是maga a b c d a : random a c : 我说 用letter A[256] : 他马上说 : 用 maga alpha beta beta。。。。 这种 : random alpha beta。 : 我的理解, hashtable 是判断有没有 include 没有判断出现次数 : 当然你可以加上 array 来 判断。
|
s*********d 发帖数: 2406 | 30 /**
Sample input:
他举得first example
magazineArticle - a b c d
ransomLetter - a c a
output - false
我用说出用字母表 array来做之后。
magazineArticle - alpha beta caesar delta
[alpha
beta
caesar
delta]
ransomLetter - alpha caesar
output - true
magazineArticle - alpha beta caesar delta
ransomLetter - alpha caesar bd
output - false
还说了,要考虑alpha 等的出现次数。 |
|
|
p*****2 发帖数: 21240 | 31
按照原帖的题意,第二个参数是个word呀。怎么你的例子里面有空格?
--------------
有一个 string 存了magazine杂志上的word
一个string 存word,判断 word在不在magazine 里
boolean findword(String magazine , String word)
【在 s*********d 的大作中提到】 : /** : Sample input: : 他举得first example : magazineArticle - a b c d : ransomLetter - a c a : output - false : 我用说出用字母表 array来做之后。 : magazineArticle - alpha beta caesar delta : [alpha : beta
|
s*********d 发帖数: 2406 | 32 sorry 我改了一下 function
他给出的function
boolean doesArticleContainLetter(
String ransomLetter,
String magazineArticle
)
你说的 第二个参数? magazineArticle ?
当时他跟我说的是,有空格,你要先分开。
【在 p*****2 的大作中提到】 : : 按照原帖的题意,第二个参数是个word呀。怎么你的例子里面有空格? : -------------- : 有一个 string 存了magazine杂志上的word : 一个string 存word,判断 word在不在magazine 里 : boolean findword(String magazine , String word)
|
p*****2 发帖数: 21240 | 33
说了半天ransomLetter也是几个单词吗?中间有空格?然后看是不是所有的单词都在
magazineArticle里?
如果这样就是hashtable就行了呀。
【在 s*********d 的大作中提到】 : sorry 我改了一下 function : 他给出的function : boolean doesArticleContainLetter( : String ransomLetter, : String magazineArticle : ) : 你说的 第二个参数? magazineArticle ? : 当时他跟我说的是,有空格,你要先分开。
|
l*****a 发帖数: 14598 | 34 弄不清题意的题旧不要费时间了吧。
原题估计是23楼吧
【在 p*****2 的大作中提到】 : : 说了半天ransomLetter也是几个单词吗?中间有空格?然后看是不是所有的单词都在 : magazineArticle里? : 如果这样就是hashtable就行了呀。
|
r**h 发帖数: 1288 | 35 第一题是著名的FizzBuzz呀,经常拿来玩Code Golf的
给一个Perl实现的目前最短解:
print+(Yes)[$_%3].(No)[$_%5]||$_,$/for 1..1e2
【在 s*********d 的大作中提到】 : 没什么说的,自己没准备好。新近IPO 公司 : 电面挂了,阿三面的但是很nice : 1. 从1-100 ,3的倍数输出yes 5的倍数输出no : 同时满足 输出yes no 同一行。 : 简单写出算法,结果他要最少最简洁的if判断我只能做出3个,还能有更简洁的吗? : or 我没理解他的意思。 : int x=3*5 ; : if (vale%x==0 ) { : System.out.println(yes+no) ; : } else if (vale%3==0) {
|
u*****o 发帖数: 1224 | 36 和大家分享网上看来的最短解,C++的,竟然一个IF也没用
#include
int main(){
for(int i = 1 ; i <= 100 ; ++i) ( (i%5)? ((i%3)?(cout << i):(cout << "
no")): cout << ((i%3)? "yes": "yes and no")) << endl;
} |
z****e 发帖数: 54598 | 37 ?在我看来就算是if了
"
【在 u*****o 的大作中提到】 : 和大家分享网上看来的最短解,C++的,竟然一个IF也没用 : #include : int main(){ : for(int i = 1 ; i <= 100 ; ++i) ( (i%5)? ((i%3)?(cout << i):(cout << " : no")): cout << ((i%3)? "yes": "yes and no")) << endl; : }
|
u*****o 发帖数: 1224 | 38 也是,而且特别难懂,我看了好半天,才把句子截开。
【在 z****e 的大作中提到】 : ?在我看来就算是if了 : : "
|
l*****a 发帖数: 14598 | 39 这样的code容易维护吗?
"
【在 u*****o 的大作中提到】 : 和大家分享网上看来的最短解,C++的,竟然一个IF也没用 : #include : int main(){ : for(int i = 1 ; i <= 100 ; ++i) ( (i%5)? ((i%3)?(cout << i):(cout << " : no")): cout << ((i%3)? "yes": "yes and no")) << endl; : }
|
r*c 发帖数: 167 | 40 RK肯定好写些,尽管它比KMP要慢不少。
前些天看到一个帖子,把RK的实现搞得特麻烦。下面贴个改进的,其中hash function
可替换,只要把各个char的信息都用到就好了。
class RobinKarpSolution
{
public:
char *strStr(char *haystack, char *needle) {
int nHSLen = strlen(haystack), nNDLen = strlen(needle);
if(nNDLen > nHSLen) return NULL;
int h_hash, n_hash = hashAString(needle, nNDLen, 0);
for(int i = 0; i <= nHSLen-nNDLen; ++i){
h_hash = hashAString(haystack, nNDLen, i);
if(n_hash == h_hash) {
if(!CheckSegment(haystack, i, needle, 0, nNDLen))
continue;
else
return m_ptr;
}
h_hash = hashAString(haystack, nNDLen, i);
}
return NULL;
}
private:
char *m_ptr;
int hashAString(const char *ptr, int nNDLen, int ibase)
{
int n_hash = 0;
for(int i = ibase; i < ibase + nNDLen; ++i)
n_hash = (n_hash * 26 + ptr[i]) % 997;
return n_hash;
}
bool CheckSegment( char *ptr1, int ibase, const char * ptr2, int jbase,
int nNDLen)
{
int k;
bool bEqual = true;
for(k = jbase; k < jbase + nNDLen; ++k){
if(ptr1[ibase + k] != ptr2[k]){
bEqual = false;
break;
}
}
if(bEqual)
m_ptr = ptr1 + (ibase + k -nNDLen);
return bEqual;
}
};
【在 J****3 的大作中提到】 : 恩恩 二爷说的是。如果这题确实是考察模式匹配, 二爷你觉得用KMP还是RK还是别的 : ?个人感觉RK比较容易实现点
|
|
|
n**********e 发帖数: 88 | 41 Question 1:
num%15==0?"yes no":(num%3==0?"yes":(num%5==0?"no":""));
there is no "if" at all. |
a******e 发帖数: 710 | 42 第一题的恶心c++解法。。
string ss[101];
for (int i=3; i<=100; i+=3)
ss[i].append("yes");
for (int i=15; i<=100; i+=15)
ss[i].append(" ");
for (int i=5; i<=100; i+=5)
ss[i].append("no");
for (int i=1; i<=100; ++i) {
ss[i].append(string((i%3==0)|(i%5==0)&1, 'n'));
if (ss[i].size()!=0)
cout<
cout<
}
【在 s*********d 的大作中提到】 : 没什么说的,自己没准备好。新近IPO 公司 : 电面挂了,阿三面的但是很nice : 1. 从1-100 ,3的倍数输出yes 5的倍数输出no : 同时满足 输出yes no 同一行。 : 简单写出算法,结果他要最少最简洁的if判断我只能做出3个,还能有更简洁的吗? : or 我没理解他的意思。 : int x=3*5 ; : if (vale%x==0 ) { : System.out.println(yes+no) ; : } else if (vale%3==0) {
|