Uber Onsite 难题一道

Given two list of lines, perpendicular to each other. Find the number of squares they form.

 class Point{
        int x;
        int y;
        
        Point(int x, int y){
            this.x = x;
            this.y = y;
        }
    }
    
    class Line{
        Point start;
        Point end;
        
        Line(Point start, Point end){
            this.start = start;
            this.end = end;
        }
    }
    
    public int getNumberOfSquares(List<Line> lines, List<Line> perpendicularLines){
        
        //todo: write method
    }

Example

Input:
Lines:
Line (start:Point (x:8, y:8), y:Point (x:18, y:8)) // K to S
Line (start:Point (x:1, y:6), y:Point (x:15, y:6)) // A to B
Line (start:Point (x:4, y:2), y:Point (x:20, y:2)) // C to D

Perpendicular Lines:
Line (start:Point (x:6, y:1), y:Point (x:6, y:9)) // F to E
Line (start:Point (x:8, y:1), y:Point (x:8, y:8)) // L to K
Line (start:Point (x:10, y:0), y:Point (x:10, y:9)) // H to G
Line (start:Point (x:14, y:1), y:Point (x:14, y:10)) // J to I

Output:
3

Explanation Visual representation:

Square 1: Intersecting points : M, N, O, P

Square 2: Intersecting points : N, Q, R, O

Square 3: Intersecting points : K, T, N, U