5/30/2014

64. Valid Sudoku

public class Solution {
    public boolean isValidSudoku(char[][] board) {
        return row(board) && col(board) && box(board);
    }
   
    public boolean row(char[][] board) {
        for (int i=0; i<9; i++) {
            boolean[] flag = new boolean[10];
            for (int j=0; j<9; j++) {
                if (markflag(flag, board[i][j])) return false;
            }
        }
        return true;
    }
   
    public boolean col(char[][] board) {
        for (int i=0; i<9; i++) {
            boolean[] flag = new boolean[10];
            for (int j=0; j<9; j++) {
                if (markflag(flag, board[j][i])) return false;
            }
        }
        return true;
    }
   
    public boolean box(char[][] board) {
        for (int i=0; i<3; i++) {
            for (int j=0; j<3; j++) {
                boolean[] flag = new boolean[10];
                for (int m=0; m<3; m++) {
                    for (int n=0; n<3; n++) {
                        if (markflag(flag, board[i*3+m][j*3+n])) return false;
                    }
                }
            }
        }
        return true;
    }
   
    public boolean markflag(boolean[] flag, char c) {
        if (c=='.') return false;
        int index = c-'0';//convert char to int
        if (flag[index]) return true;
        else {
            flag[index]=true;
            return false;
        }
    }
}

没有评论:

发表评论