Magic Squares In Grid

给一个2d数组, 找到其中的3×3的2d数组, row, col,diagonal都是一个数, 并且从1-9组成. 这个题限制很多, 我开始直接做的,后来发现答案有一个很巧妙的. 通过观察可以得知, 5肯定在中间, 四个角肯定是偶数, 其他位置是奇数, 然而奇数能组成题意的矩阵的, 只有

438
951
276
class Solution {
 public int numMagicSquaresInside(int[][] grid) {
  int res = 0;
  for (int i = 1; i < grid.length - 1; i++) {
   for (int j = 1; j < grid[0].length - 1; j++) {
    if (grid[i][j] == 5) {
     res += isMagic(i, j, grid) ? 1 : 0;
    }
   }
  }
  return res;
 }

 public boolean isMagic(int i, int j, int[][] grid) {
  String s = "" + grid[i - 1][j - 1] + grid[i - 1][j] + grid[i - 1][j + 1] + grid[i][j + 1] + grid[i + 1][j + 1] + grid[i + 1][j] + grid[i + 1][j - 1] + grid[i][j - 1];
  return "4381672943816729".contains(s) || "9276183492761834".contains(s);
 }
}