3529. 统计水平子串和垂直子串重叠格子的数目
题目描述
给你一个由字符组成的 m x n
矩阵 grid
和一个字符串 pattern
。
水平子串 是从左到右的一段连续字符序列。如果子串到达了某行的末尾,它将换行并从下一行的第一个字符继续。不会 从最后一行回到第一行。
垂直子串 是从上到下的一段连续字符序列。如果子串到达了某列的底部,它将换列并从下一列的第一个字符继续。不会 从最后一列回到第一列。
请统计矩阵中满足以下条件的单元格数量:
- 该单元格必须属于 至少 一个等于
pattern
的水平子串,且属于 至少 一个等于pattern
的垂直子串。
返回满足条件的单元格数量。
示例 1:
输入: grid = [["a","a","c","c"],["b","b","b","c"],["a","a","b","a"],["c","a","a","c"],["a","a","b","a"]], pattern = "abaca"
输出: 1
解释:
"abaca"
作为一个水平子串(蓝色)和一个垂直子串(红色)各出现一次,并在一个单元格(紫色)处相交。
示例 2:
输入: grid = [["c","a","a","a"],["a","a","b","a"],["b","b","a","a"],["a","a","b","a"]], pattern = "aba"
输出: 4
解释:
上述被标记的单元格都同时属于至少一个 "aba"
的水平和垂直子串。
示例 3:
输入: grid = [["a"]], pattern = "a"
输出: 1
提示:
m == grid.length
n == grid[i].length
1 <= m, n <= 1000
1 <= m * n <= 105
1 <= pattern.length <= m * n
grid
和pattern
仅由小写英文字母组成。
解法
方法一
1 |
|
1 |
|
1 |
|
1 |
|