ibm 面试+ oa

题意:

Input: String ipt1 = “Frank->Mary,Mary->Sam,Mary->Bob,Sam->Katie,Sam->Pete,Bob->John,Bob,Katie”;

找到Bob, Katie lowest common Ancestor

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
public String getAncestor(String input){
HashMap<String, String> hashMap = new HashMap<>();

String[] strSet = input.split(",");
String target1 = strSet[strSet.length - 2];
String target2 = strSet[strSet.length - 1];

for(int i = 0; i < strSet.length - 2; i++){
String[] item = strSet[i].split("->");
String employee = item[1];
String manager = item[0];
hashMap.put(employee, manager);
}

HashSet<String> hashSet = new HashSet<>();

String p1Manager = target1;
String p2Manager = target2;
while(hashMap.containsKey(p1Manager) || hashMap.containsKey(p2Manager)){
if(hashMap.containsKey(p1Manager)){
p1Manager = hashMap.get(p1Manager);
if(!hashSet.add(p1Manager)) return p1Manager;
}

if(hashMap.containsKey((p2Manager))){
p2Manager = hashMap.get(p2Manager);
if(!hashSet.add(p2Manager)) return p2Manager;
}
}

return "";//
}