leetcode_1876 长度为三且各字符不同的子字符串

299 阅读1分钟

要求

如果一个字符串不含有任何重复字符,我们称这个字符串为 好 字符串。

给你一个字符串 s ,请你返回 s 中长度为 3 的 好子字符串 的数量。

注意,如果相同的好子字符串出现多次,每一次都应该被记入答案之中。

子字符串 是一个字符串中连续的字符序列。

示例 1:

输入:s = "xyzzaz"
输出:1
解释:总共有 4 个长度为 3 的子字符串:"xyz""yzz""zza""zaz" 。
唯一的长度为 3 的好子字符串是 "xyz"

示例 2:

输入:s = "aababcabc"
输出:4
解释:总共有 7 个长度为 3 的子字符串:"aab""aba""bab""abc""bca""cab""abc" 。
好子字符串包括 "abc""bca""cab""abc"

提示:

  • 1 <= s.length <= 100
  • s 只包含小写英文字母。

核心代码

class Solution:
    def countGoodSubstrings(self, s: str) -> int:
        n = len(s)
        if n < 3:
            return 0
        res = 0
        for i in range(n - 2):
            a, b, c = s[i], s[i+1], s[i+2]
            if a != b and a != c and b != c:
                res += 1
        return res

image.png

解题思路:我们循环遍历字符串,只要连续3个字符不相同的话,我们就认为这个是符合答案的,个数加一。