给你一个下标从 0 开始、大小为 n x n 的整数矩阵 grid ,返回满足 Ri 行和 Cj 列相等的行列对 (Ri, Cj) 的数目。
如果行和列以相同的顺序包含相同的元素(即相等的数组),则认为二者是相等的。
题目链接:https://leetcode.cn/problems/equal-row-and-column-pairs/
# 解题思路
hash 计数:
- 将行、列转换成数字字符串(用分隔符‘#’连接),如此可以得到唯一的 key
 - 遍历每一行,建立数字字符串的 hash 计数表
 - 再遍历每一列,统计相等的数字字符串,累加到答案即可
 
# 提交结果

# 代码
class Solution {  | |
public int equalPairs(int[][] grid) {  | |
int n = grid.length;  | |
Map<String, Integer> rowMap = new HashMap<>();  | |
for (int[] g : grid) {  | |
StringBuilder sb = new StringBuilder();  | |
for (int j = 0; j < n; ++j) {  | |
sb.append(g[j]).append('#');  | |
            } | |
String k = sb.toString();  | |
rowMap.put(k, rowMap.getOrDefault(k, 0) + 1);  | |
        } | |
int ret = 0;  | |
for (int j = 0; j < n; ++j) {  | |
StringBuilder sb = new StringBuilder();  | |
for (int i = 0; i < n; ++i) {  | |
sb.append(grid[i][j]).append('#');  | |
            } | |
ret += rowMap.getOrDefault(sb.toString(), 0);  | |
        } | |
return ret;  | |
    } | |
} |