
题意:
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 "";// }
|
近期评论