a********r 发帖数: 218 | 1 在线测试题,关于 industry classification system
先要读文件如下:
industry | pharmacy | healthcare (这里有继承关系,pharmacy包含在healthcare里
面)
company | pfiza | pharmacy (意思是pfiza属于pharmacy)
根据上面的信息,
string findcompany("healthcare")
应该输出 pfiza
那位大牛给菜鸟指点一下吧, 跪谢 |
r*******e 发帖数: 971 | 2 前缀只有Industry与Company么??
如果是,做两个HashMap 一个叫Industry 一个叫company
然后读文件 如果前缀==Industry,这个map 放入 key=后缀,value =中缀的 key-
value pair
如果是company,在company那个map做同样操作。
那个findcompany就是查两遍hashmap了。
我感觉似乎不止这些。
然后这个B是bloomberg么,这家online test在哪里啊。 |
a********r 发帖数: 218 | 3 是的。他们发给我一个连接,现在进不去了
如果 industry | healthcare, key is "healthcare", value is empty?
如果 industry | pharmacy | healthcare, what is key and value?
如何体现继承关系?也就是说如何知道pharmacy是healthcare的儿子?
【在 r*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 前缀只有Industry与Company么?? : 如果是,做两个HashMap 一个叫Industry 一个叫company : 然后读文件 如果前缀==Industry,这个map 放入 key=后缀,value =中缀的 key- : value pair : 如果是company,在company那个map做同样操作。 : 那个findcompany就是查两遍hashmap了。 : 我感觉似乎不止这些。 : 然后这个B是bloomberg么,这家online test在哪里啊。
|
r*******e 发帖数: 971 | 4 如果只有这样的数据,key始终是后缀。
然后value得根据分割后的数据大小决定。3则中缀为value,2则用空字符串为value
继承关系根据key-value pair就知道了,C++ 中的map.find(key)或者map(key),java
里面的map.get(key),python 里面的dict[key]
【在 a********r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 是的。他们发给我一个连接,现在进不去了 : 如果 industry | healthcare, key is "healthcare", value is empty? : 如果 industry | pharmacy | healthcare, what is key and value? : 如何体现继承关系?也就是说如何知道pharmacy是healthcare的儿子?
|
a********r 发帖数: 218 | 5 加菲鲸大牛:
我没把问题讲清楚
industry 有成千上万行,每行层次也不一样, 有继承关系, 用 | 分隔
industry | healthcare |
industry | pharmacy | food and drug
industry |food and drug | healthcare
industry |pharmacy | food and drug |healthcare (这里的继承关系是 pharmacy
是 food and drug 的儿子,又是 healthcare 的孙子)
....
company 有成千上万行,每行层次也不一样, 无继承关系, 用 | 分隔
company | pfiza | pharmacy
company | cvs | food and drug
所以
findcomapany("healthcare") 应该输出 pfiza, cvs
【在 r*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 如果只有这样的数据,key始终是后缀。 : 然后value得根据分割后的数据大小决定。3则中缀为value,2则用空字符串为value : 继承关系根据key-value pair就知道了,C++ 中的map.find(key)或者map(key),java : 里面的map.get(key),python 里面的dict[key]
|
r*******e 发帖数: 971 | 6 这似乎是让你构建一个森林??
还是得用两个map,map_industry 与map_company,类型均为>。
前缀为industry时,后缀为key,后缀前一个放进value的list中。然后依次递减操作。
前缀为company时,后缀为key,后缀前一个放进value的list中。
如果你要找healthcare 中的company,先在map_industry中找到所有healthcare的子孙
,然后在map_company中把这些子孙以及healthcare自己对应的公司都抓住来。如果想
要保证不重复,那估计得扔进一个TreeSet里面。
如果想要找到某类工业的祖先,可以再做一个map,操作方法与map_industry 反过来。
似乎也就这样子了。 |
m*****k 发帖数: 731 | 7 类似file system design?
industry <-> folder
company <-> file
特殊点在于folder下不能同时有folder和file,楼主confirm一下?
变成找某folder中所有文件。
Tree BFS, return file leaves. |
a********r 发帖数: 218 | 8 在线测试题,关于 industry classification system
先要读文件如下:
industry | pharmacy | healthcare (这里有继承关系,pharmacy包含在healthcare里
面)
company | pfiza | pharmacy (意思是pfiza属于pharmacy)
根据上面的信息,
string findcompany("healthcare")
应该输出 pfiza
那位大牛给菜鸟指点一下吧, 跪谢 |
r*******e 发帖数: 971 | 9 前缀只有Industry与Company么??
如果是,做两个HashMap 一个叫Industry 一个叫company
然后读文件 如果前缀==Industry,这个map 放入 key=后缀,value =中缀的 key-
value pair
如果是company,在company那个map做同样操作。
那个findcompany就是查两遍hashmap了。
我感觉似乎不止这些。
然后这个B是bloomberg么,这家online test在哪里啊。 |
a********r 发帖数: 218 | 10 是的。他们发给我一个连接,现在进不去了
如果 industry | healthcare, key is "healthcare", value is empty?
如果 industry | pharmacy | healthcare, what is key and value?
如何体现继承关系?也就是说如何知道pharmacy是healthcare的儿子?
【在 r*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 前缀只有Industry与Company么?? : 如果是,做两个HashMap 一个叫Industry 一个叫company : 然后读文件 如果前缀==Industry,这个map 放入 key=后缀,value =中缀的 key- : value pair : 如果是company,在company那个map做同样操作。 : 那个findcompany就是查两遍hashmap了。 : 我感觉似乎不止这些。 : 然后这个B是bloomberg么,这家online test在哪里啊。
|
r*******e 发帖数: 971 | 11 如果只有这样的数据,key始终是后缀。
然后value得根据分割后的数据大小决定。3则中缀为value,2则用空字符串为value
继承关系根据key-value pair就知道了,C++ 中的map.find(key)或者map(key),java
里面的map.get(key),python 里面的dict[key]
【在 a********r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 是的。他们发给我一个连接,现在进不去了 : 如果 industry | healthcare, key is "healthcare", value is empty? : 如果 industry | pharmacy | healthcare, what is key and value? : 如何体现继承关系?也就是说如何知道pharmacy是healthcare的儿子?
|
a********r 发帖数: 218 | 12 加菲鲸大牛:
我没把问题讲清楚
industry 有成千上万行,每行层次也不一样, 有继承关系, 用 | 分隔
industry | healthcare |
industry | pharmacy | food and drug
industry |food and drug | healthcare
industry |pharmacy | food and drug |healthcare (这里的继承关系是 pharmacy
是 food and drug 的儿子,又是 healthcare 的孙子)
....
company 有成千上万行,每行层次也不一样, 无继承关系, 用 | 分隔
company | pfiza | pharmacy
company | cvs | food and drug
所以
findcomapany("healthcare") 应该输出 pfiza, cvs
【在 r*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 如果只有这样的数据,key始终是后缀。 : 然后value得根据分割后的数据大小决定。3则中缀为value,2则用空字符串为value : 继承关系根据key-value pair就知道了,C++ 中的map.find(key)或者map(key),java : 里面的map.get(key),python 里面的dict[key]
|
r*******e 发帖数: 971 | 13 这似乎是让你构建一个森林??
还是得用两个map,map_industry 与map_company,类型均为>。
前缀为industry时,后缀为key,后缀前一个放进value的list中。然后依次递减操作。
前缀为company时,后缀为key,后缀前一个放进value的list中。
如果你要找healthcare 中的company,先在map_industry中找到所有healthcare的子孙
,然后在map_company中把这些子孙以及healthcare自己对应的公司都抓住来。如果想
要保证不重复,那估计得扔进一个TreeSet里面。
如果想要找到某类工业的祖先,可以再做一个map,操作方法与map_industry 反过来。
似乎也就这样子了。 |
f**********t 发帖数: 1001 | 14 class CompanyDB:
def __init__(self, fname):
self.industries = defaultdict(set)
self.companies = defaultdict(set)
fp = open(fname);
for line in fp.readlines:
items = line.split('|')
if len(items) < 3:
continue
if items[0] == "industry":
self.industries[items[2].strip()].add(items[1].strip())
elif items[0] == "company":
self.companies[items[2].strip()].add(items[1].strip())
def search(self, industry):
res = set()
dq = deque(industry)
while len(dq) > 0:
cur = deque.popleft()
res.extend(companies[cur])
for ind in industries[cur]:
dq.append(ind)
return res
|