Count islands in a binary grid
Company: Samsung
Role: Software Engineer
Category: Coding & Algorithms
Difficulty: easy
Interview Round: Technical Screen
## Problem
You are given an `m x n` grid of characters where each cell is either `'1'` (land) or `'0'` (water). An **island** is formed by connecting adjacent land cells **horizontally or vertically** (not diagonally). The grid edges are surrounded by water.
Return the **number of islands** in the grid.
## Input
- `grid`: a 2D array/list of characters `'0'` and `'1'`
## Output
- An integer: the number of islands
## Constraints
- `1 <= m, n <= 300`
- `grid[i][j] ∈ {'0','1'}`
## Example
Input:
```
[
['1','1','0','0','0'],
['1','1','0','0','0'],
['0','0','1','0','0'],
['0','0','0','1','1']
]
```
Output:
```
3
```
Explanation: There are three disconnected land components.
Quick Answer: This question evaluates a candidate's ability to analyze grid-based data structures and identify connected components, testing spatial adjacency reasoning and state management within 2D arrays.
Return the number of 4-directionally connected land components in a binary grid.
Examples
Input: ([['1', '1', '0'], ['0', '1', '0'], ['1', '0', '1']],)
Expected Output: 3
Explanation: Diagonal land is separate.
Input: ([],)
Expected Output: 0
Explanation: Empty grid.
Input: ([[0, 0]],)
Expected Output: 0
Explanation: All water.
Input: ([[1, 1], [1, 1]],)
Expected Output: 1
Explanation: One island.