跳转至

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
  • gridpattern 仅由小写英文字母组成。

解法

方法一

1

1

1

1

评论