📌  相关文章
📜  计算二进制字符串的子串,使得每个字符属于大小大于 1 的回文(1)

📅  最后修改于: 2023-12-03 15:41:37.469000             🧑  作者: Mango

计算二进制字符串的子串,使得每个字符属于大小大于 1 的回文

题目描述:

给定一个二进制字符串,在其中找到所有满足以下条件的子串:

  • 子串长度大于 1。
  • 子串中的每个字符都是回文,并且所有字符都相同。

返回符合条件的子串个数。

示例:

输入: "abbac"

输出: 2

解释: "bb" 和 "cc" 都是符合条件的子串。

思路:

  • 定义一个计数器 count,表示符合条件的子串个数;
  • 遍历二进制字符串 s,以每个字符为中心,向两侧扩展,计算符合条件的子串数;
  • 扩展的过程中,如果遇到回文不符合条件,则跳出扩展循环;
  • 扩展的过程中,如果遇到回文符合条件,则计数器 count 加 1。

代码实现:

class Solution:
    def countPalindromicSubstrings(self, s: str) -> int:
        n = len(s)
        count = 0
        for i in range(n):
            j = i - 1
            k = i + 1
            while j >= 0 and s[j] == s[i]:
                j -= 1
            while k < n and s[k] == s[i]:
                k += 1
            while j >= 0 and k < n and s[j] == s[k]:
                j -= 1
                k += 1
                count += 1
        return count

代码说明:

  • 定义一个计数器 count,用于记录符合条件的子串数量;
  • 遍历字符串 s,以每个字符为中心,向两侧扩展,计算符合条件的子串数;
  • 扩展的过程中,如果遇到回文不符合条件,则跳出扩展循环;
  • 扩展的过程中,如果遇到回文符合条件,则计数器 count 加 1;
  • 最后返回计数器 count。