public int maxKilledEnemies(char[][] grid) {
if (grid == null || grid.length == 0 || grid[0].length == 0) {
int m = grid.length, n = grid[0].length;
int[][] table = new int[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
table[i][j] += getEnemies(i, j, grid, true);
table[i][j] += getEnemies(i, j, grid, false);
res = Math.max(res, table[i][j]);
public int getEnemies(int row, int col, char[][] grid, boolean isRow) {
while (j < grid[0].length && grid[row][j] != 'W') {
if (grid[row][j] == 'E') {
while (j >= 0 && grid[row][j] != 'W') {
if (grid[row][j] == 'E') {
while (i < grid.length && grid[i][col] != 'W') {
if (grid[i][col] == 'E') {
while (i >= 0 && grid[i][col] != 'W') {
if (grid[i][col] == 'E') {