You are given nodeCount nodes labeled from 0 to nodeCount - 1 and a collection of undirected edges, where each edge connects two nodes. 
 Edges are actually list of string and you will have to parse each row to extract connected nodes. 
 
 Write a method to determine how many separate connected groups (components) there are in the undirected graph.
Example 1:
Input: nodeCount = 6, links = ["0 2", "1 2", "3 5"]
Graph structure:
0 1 3
\ / |
2 5
Nodes 0-1-2 are connected, 3-5 are connected, and node 4 is isolated.
Output: 3
Explanation: There are three groups: {0,1,2}, {3,5}, and {4}.
Example 2:
Input: nodeCount = 4, links = ["0 1", "1 2", "2 3"]
Graph structure:
0-1-2-3
Output: 1
Explanation: All nodes are part of a single connected component.
Example 3:
Input: nodeCount = 3, links = []
Output: 3
Explanation: Each node is isolated, so there are 3 separate components.
        1 <= nodeCount <= 1040 <= links.length <= 2 * 104links[i].length == 20 <= links[i][0], links[i][1] < nodeCountlinks.