Given an `m x n` 2D binary grid `grid` which represents a map of `'1'`s (land) and `'0'`s (water), return the number of islands.
An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically.
checklist Constraints
m == grid.length n == grid[i].length 1 <= m, n <= 300 grid[i][j] is '0' or '1'.