Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public boolean areSentencesSimilarTwo(String[] words1, String[] words2, String[][] pairs) {
- int m = words1.length, n = words2.length;
- if(m != n) return false;
- Map<String, String> map = new HashMap<>();
- for(String[] pair : pairs)
- {
- String u = pair[0], v = pair[1];
- if(!map.containsKey(u)) map.put(u, u);
- if(!map.containsKey(v)) map.put(v, v);
- String pu = parent(u, map), pv = parent(v, map);
- if(!pu.equals(pv)) map.put(pu, pv);
- }
- for(int i = 0; i < m; i++)
- {
- String u = words1[i], v = words2[i], pu = parent(u, map), pv = parent(v, map);
- if(u.equals(v) || (pu != null && pv != null && pu.equals(pv))) continue;
- if(pu == null || pv == null) return false;
- return false;
- }
- return true;
- }
- String parent(String str, Map<String, String> map)
- {
- if(!map.containsKey(str)) return null;
- String p = map.get(str);
- while(!p.equals(map.get(p))) p = map.get(p);
- map.put(str, p);
- return p;
- }
- }
Add Comment
Please, Sign In to add comment