k**********i 发帖数: 177 | 1 就是那个电话号码 生成字符串的算法是啥,还是不太清楚
比如 号码是2 3,
就生成ad ae af bd be bf。。。
还是不太明白怎么做这个题 |
b******v 发帖数: 1493 | 2 用 trie tree
【在 k**********i 的大作中提到】 : 就是那个电话号码 生成字符串的算法是啥,还是不太清楚 : 比如 号码是2 3, : 就生成ad ae af bd be bf。。。 : 还是不太明白怎么做这个题
|
k***e 发帖数: 556 | 3 check "programming interview exposed" for detailed solution
【在 k**********i 的大作中提到】 : 就是那个电话号码 生成字符串的算法是啥,还是不太清楚 : 比如 号码是2 3, : 就生成ad ae af bd be bf。。。 : 还是不太明白怎么做这个题
|
k**********i 发帖数: 177 | 4 这个构造tree的话 会很麻烦吧?
【在 b******v 的大作中提到】 : 用 trie tree
|
s*********t 发帖数: 1663 | 5 弄两个队列
打印就可以了
【在 k**********i 的大作中提到】 : 就是那个电话号码 生成字符串的算法是啥,还是不太清楚 : 比如 号码是2 3, : 就生成ad ae af bd be bf。。。 : 还是不太明白怎么做这个题
|
k**********i 发帖数: 177 | 6 我刚想的是 可以看成是一个三进制的加法去 每次加1去找对应的字符串吧。。。复杂
度刚好就是
找的次数。
【在 s*********t 的大作中提到】 : 弄两个队列 : 打印就可以了
|
s*********t 发帖数: 1663 | 7 good!
我居然构造了个tree然后dfs...
aaaaaaaaaaaaaaaa
【在 k**********i 的大作中提到】 : 我刚想的是 可以看成是一个三进制的加法去 每次加1去找对应的字符串吧。。。复杂 : 度刚好就是 : 找的次数。
|
s*********t 发帖数: 1663 | 8 这下完了
前几天面试做的这个题
难怪没下文了
【在 s*********t 的大作中提到】 : good! : 我居然构造了个tree然后dfs... : aaaaaaaaaaaaaaaa
|
r****o 发帖数: 1950 | 9 没看明白,求详解。
【在 k**********i 的大作中提到】 : 我刚想的是 可以看成是一个三进制的加法去 每次加1去找对应的字符串吧。。。复杂 : 度刚好就是 : 找的次数。
|
k**********i 发帖数: 177 | 10 我epic的时候也做得这个题。。。结果当时不太会, 果然就悲剧了。。。
【在 s*********t 的大作中提到】 : 这下完了 : 前几天面试做的这个题 : 难怪没下文了
|
|
|
s*********t 发帖数: 1663 | 11 不过我觉得我做的题目结果应该是对的
要是挂了多半是因为书写比较潦草。。以前没在纸上写过程序
【在 k**********i 的大作中提到】 : 我epic的时候也做得这个题。。。结果当时不太会, 果然就悲剧了。。。
|
k**********i 发帖数: 177 | 12 我觉得epic的招人过程就很神奇
【在 s*********t 的大作中提到】 : 不过我觉得我做的题目结果应该是对的 : 要是挂了多半是因为书写比较潦草。。以前没在纸上写过程序
|
d**e 发帖数: 6098 | 13 可以解释一下吗?谢谢
【在 k**********i 的大作中提到】 : 我刚想的是 可以看成是一个三进制的加法去 每次加1去找对应的字符串吧。。。复杂 : 度刚好就是 : 找的次数。
|
s*********t 发帖数: 1663 | 14 离我太远了,给onsite也不现实。。
【在 k**********i 的大作中提到】 : 我觉得epic的招人过程就很神奇
|
k**********i 发帖数: 177 | 15 我也是的。。。太远。。。
【在 s*********t 的大作中提到】 : 离我太远了,给onsite也不现实。。
|
k**********i 发帖数: 177 | 16 我的意思是, 加入就有一个3位的电话号码, 给了3位后 我就能确定是那几个键了,
比如234,
那么对应的就应该是 abc def ghi,
000 -》 adg
001 -》 adh
002 -》 adi
。。。
然后从ooo开始每次加1就能找到对应的那个字符串了
【在 r****o 的大作中提到】 : 没看明白,求详解。
|
d**e 发帖数: 6098 | 17 这里是用 hash ?
你前面说的三进制是什么意思?
,
【在 k**********i 的大作中提到】 : 我的意思是, 加入就有一个3位的电话号码, 给了3位后 我就能确定是那几个键了, : 比如234, : 那么对应的就应该是 abc def ghi, : 000 -》 adg : 001 -》 adh : 002 -》 adi : 。。。 : 然后从ooo开始每次加1就能找到对应的那个字符串了
|
k**********i 发帖数: 177 | 18 比如234,
010 -》aei
011 -> aeh
不需要hash吧。。。就是一个数 n ++, 然后给出3进制的形式 然后找对应的字符串 |
s*********t 发帖数: 1663 | 19 手算
我写了一个
def printCombo(instr):
dic = ("","","ABC","DEF","GHI","JKL","MNO","PQRS","TUV","WXYZ")
s = []
n = 1
for i in instr:
s.append(dic[i][0])
n *= len(dic[i])
for i in range(n):
print ''.join(s)
for j in range(len(s)-1,-1,-1):
s[j] = chr( ord(s[j])+1 )
if dic[ instr[j] ].find(s[j])==-1:
s[j] = dic[ instr[j] ][0]
else:
break
instr = [2, 3, 4, 5]
print
【在 d**e 的大作中提到】 : 这里是用 hash ? : 你前面说的三进制是什么意思? : : ,
|
k**********i 发帖数: 177 | 20 加入电话号码就是三位
define phone_number_length 3
void pringCom(int num[])
{
char result[3] ={'\0'};
int b[3]= {0,0,0};
int n=0;
while (1)
{
int k =n;
b[2] = k%3;
k = k/3;
b[1] = k%3;
k = k/3;
b[0] = k%3;
int i;
for (i =0; i<3;i++)
{
result[i] = getChar(num[i], b[i]);
printf ("%s", result[i]);
}
printf ("\n");
n++;
if (n > ?) //这里就是总共的个数
break;
}
}
【在 s*********t 的大作中提到】 : 手算 : 我写了一个 : def printCombo(instr): : dic = ("","","ABC","DEF","GHI","JKL","MNO","PQRS","TUV","WXYZ") : s = [] : n = 1 : for i in instr: : s.append(dic[i][0]) : n *= len(dic[i]) :
|
|
|
j**l 发帖数: 2911 | 21 想象一个电表,从0000跳到9999的过程,最右边的那个变得最快,到了9后开始归0,左
边一个升1
你可以把这题看成一个三叉树的遍历,也可以看成三进制数的累加过程
用递归和用迭代都可以实现 |
s*********t 发帖数: 1663 | 22 输入长度是事先不知道的
【在 k**********i 的大作中提到】 : 加入电话号码就是三位 : define phone_number_length 3 : void pringCom(int num[]) : { : char result[3] ={'\0'}; : int b[3]= {0,0,0}; : int n=0; : while (1) : { : int k =n;
|
k**********i 发帖数: 177 | 23 恩。。举个例子
【在 s*********t 的大作中提到】 : 输入长度是事先不知道的
|
y**i 发帖数: 1112 | 24 感觉像bitmap一样?当然bit是2进制
但是7和9是对应4个字母,比较特殊,这里怎么办?
【在 k**********i 的大作中提到】 : 比如234, : 010 -》aei : 011 -> aeh : 不需要hash吧。。。就是一个数 n ++, 然后给出3进制的形式 然后找对应的字符串
|
k**********i 发帖数: 177 | 25 哪能不能完全看成4进制来, 就是把3个的补成四个, 但是只有3个的就不输出第四个
的情况?
【在 y**i 的大作中提到】 : 感觉像bitmap一样?当然bit是2进制 : 但是7和9是对应4个字母,比较特殊,这里怎么办?
|
y**i 发帖数: 1112 | 26 能不能这样,每一位的进制不一样,根据输入的数字从一个lookup table可以查到。
【在 k**********i 的大作中提到】 : 哪能不能完全看成4进制来, 就是把3个的补成四个, 但是只有3个的就不输出第四个 : 的情况?
|
s*********t 发帖数: 1663 | 27 看前面我写的python代码
【在 y**i 的大作中提到】 : 感觉像bitmap一样?当然bit是2进制 : 但是7和9是对应4个字母,比较特殊,这里怎么办?
|
y**i 发帖数: 1112 | 28 你的代码里k%3可以改成k%d[num[2]],// d[] = {0, 0, 3, 3, 3, 3, 3, 4, 3, 9};
【在 k**********i 的大作中提到】 : 加入电话号码就是三位 : define phone_number_length 3 : void pringCom(int num[]) : { : char result[3] ={'\0'}; : int b[3]= {0,0,0}; : int n=0; : while (1) : { : int k =n;
|
k**********i 发帖数: 177 | 29 恩。。。好主意
【在 y**i 的大作中提到】 : 你的代码里k%3可以改成k%d[num[2]],// d[] = {0, 0, 3, 3, 3, 3, 3, 4, 3, 9};
|
y**i 发帖数: 1112 | 30 我python都忘光了。。。
【在 s*********t 的大作中提到】 : 看前面我写的python代码
|