forked from kdn251/interviews
-
Notifications
You must be signed in to change notification settings - Fork 0
/
GoogleIsFeelingLucky.java
127 lines (92 loc) · 3.71 KB
/
GoogleIsFeelingLucky.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
// Google is one of the most famous Internet search engines which hosts and develops a number of Internetbased
// services and products. On its search engine website, an interesting button ‘I’m feeling lucky’
// attracts our eyes. This feature could allow the user skip the search result page and goes directly to the
// first ranked page. Amazing! It saves a lot of time.
// The question is, when one types some keywords and presses ‘I’m feeling lucky’ button, which web
// page will appear? Google does a lot and comes up with excellent approaches to deal with it. In this
// simplified problem, let us just consider that Google assigns every web page an integer-valued relevance.
// The most related page will be chosen. If there is a tie, all the pages with the highest relevance are
// possible to be chosen.
// Your task is simple, given 10 web pages and their relevance. Just pick out all the possible candidates
// which will be served to the user when ‘I’m feeling lucky’.
// Input
// The input contains multiple test cases. The number of test cases T is in the first line of the input file.
// For each test case, there are 10 lines, describing the web page and the relevance. Each line contains
// a character string without any blank characters denoting the URL of this web page and an integer
// Vi denoting the relevance of this web page. The length of the URL is between 1 and 100 inclusively.
// (1 ≤ Vi ≤ 100)
// Output
// For each test case, output several lines which are the URLs of the web pages which are possible to be
// chosen. The order of the URLs is the same as the input. Please look at the sample output for further
// information of output format.
// Sample Input
// 2
// www.youtube.com 1
// www.google.com 2
// www.google.com.hk 3
// www.alibaba.com 10
// www.taobao.com 5
// www.bad.com 10
// www.good.com 7
// www.fudan.edu.cn 8
// www.university.edu.cn 9
// acm.university.edu.cn 10
// www.youtube.com 1
// www.google.com 2
// www.google.com.hk 3
// www.alibaba.com 11
// www.taobao.com 5
// www.bad.com 10
// www.good.com 7
// www.fudan.edu.cn 8
// acm.university.edu.cn 9
// acm.university.edu.cn 10
// Sample Output
// Case #1:
// www.alibaba.com
// www.bad.com
// acm.university.edu.cn
// Case #2:
// www.alibaba.com
/**
* Created by kdn251 on 1/30/17.
*/
import java.util.*;
public class GoogleIsFeelingLucky {
public static void main(String args[]) {
HashMap<Integer, List<String>> map = new HashMap<Integer, List<String>>();
Scanner sc = new Scanner(System.in);
int testCases = sc.nextInt();
int max = Integer.MIN_VALUE;
int caseCount = 1;
for(int i = 0; i < testCases * 10; i++) {
String website = sc.next();
int relevance = sc.nextInt();
if(i % 10 == 0 && i != 0) {
List<String> allCandidates = map.get(max);
System.out.println("Case #" + caseCount + ":");
caseCount++;
for(String s : allCandidates) {
System.out.println(s);
}
map = new HashMap<Integer, List<String>>();
max = Integer.MIN_VALUE;
}
if(map.containsKey(relevance)) {
map.get(relevance).add(website);
}
if(!map.containsKey(relevance)) {
List<String> list = new ArrayList<String>();
map.put(relevance, list);
map.get(relevance).add(website);
}
if(relevance > max) {
max = relevance;
}
}
System.out.println("Case #" + caseCount + ":");
for(String s : map.get(max)) {
System.out.println(s);
}
}
}