|  | @@ -0,0 +1,26 @@
 | 
	
		
			
				|  |  | +class Solution {
 | 
	
		
			
				|  |  | +    public List<List<String>> findDuplicate(String[] paths) {
 | 
	
		
			
				|  |  | +        List<List<String>> res = new LinkedList<>();
 | 
	
		
			
				|  |  | +        HashMap<String, Integer> map = new HashMap<>();
 | 
	
		
			
				|  |  | +        for (String path : paths) {
 | 
	
		
			
				|  |  | +            String[] part = path.split(" ");
 | 
	
		
			
				|  |  | +            for (int i = 1; i < part.length; i++) {
 | 
	
		
			
				|  |  | +                String[] file = part[i].split("\\(");
 | 
	
		
			
				|  |  | +                Integer idx = map.get(file[1]);
 | 
	
		
			
				|  |  | +                if (idx == null) {
 | 
	
		
			
				|  |  | +                    res.add(new LinkedList<String>());
 | 
	
		
			
				|  |  | +                    idx = res.size() - 1;
 | 
	
		
			
				|  |  | +                    map.put(file[1], idx);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                String fullPath = part[0] + "/" + file[0];
 | 
	
		
			
				|  |  | +                res.get(idx).add(fullPath);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        Iterator<List<String>> iter = res.iterator();
 | 
	
		
			
				|  |  | +        while (iter.hasNext()) {
 | 
	
		
			
				|  |  | +            List<String> list = iter.next();
 | 
	
		
			
				|  |  | +            if (list.size() == 1) iter.remove();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return res;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |