Welcome to Subscribe On Youtube

Formatted question description: https://leetcode.ca/all/1876.html

1876. Substrings of Size Three with Distinct Characters

Level

Easy

Description

A string is good if there are no repeated characters.

Given a string s, return the number of good substrings of length three in s.

Note that if there are multiple occurrences of the same substring, every occurrence should be counted.

A substring is a contiguous sequence of characters in a string.

Example 1:

Input: s = “xyzzaz”

Output: 1

Explanation: There are 4 substrings of size 3: “xyz”, “yzz”, “zza”, and “zaz”.

The only good substring of length 3 is “xyz”.

Example 2:

Input: s = “aababcabc”

Output: 4

Explanation: There are 7 substrings of size 3: “aab”, “aba”, “bab”, “abc”, “bca”, “cab”, and “abc”.

The good substrings are “abc”, “bca”, “cab”, and “abc”.

Constraints:

  • 1 <= s.length <= 100
  • s consists of lowercase English letters.

Solution

Loop over all substrings with length three of s. For each such substring, check whether the three characters are all distinct. Count the substrings with length three and all characters distinct, and return the count.

  • class Solution {
        public int countGoodSubstrings(String s) {
            int count = 0;
            int length = s.length();
            for (int i = 3; i <= length; i++) {
                String sub = s.substring(i - 3, i);
                Set<Character> set = new HashSet<Character>();
                for (int j = 0; j < 3; j++)
                    set.add(sub.charAt(j));
                if (set.size() == 3)
                    count++;
            }
            return count;
        }
    }
    
    ############
    
    class Solution {
        public int countGoodSubstrings(String s) {
            int count = 0, n = s.length();
            for (int i = 0; i < n - 2; ++i) {
                char a = s.charAt(i), b = s.charAt(i + 1), c = s.charAt(i + 2);
                if (a != b && a != c && b != c) {
                    ++count;
                }
            }
            return count;
        }
    }
    
  • // OJ: https://leetcode.com/problems/substrings-of-size-three-with-distinct-characters/
    // Time: O(N)
    // Space: O(1)
    class Solution {
    public:
        int countGoodSubstrings(string s) {
            int ans = 0;
            for (int i = 0; i+ 2 < s.size(); ++i) {
                ans += s[i] != s[i+1] && s[i+1] != s[i+2] && s[i] != s[i+2];
            }
            return ans;
        }
    };
    
  • class Solution:
        def countGoodSubstrings(self, s: str) -> int:
            count, n = 0, len(s)
            for i in range(n - 2):
                count += s[i] != s[i + 1] and s[i] != s[i + 2] and s[i + 1] != s[i + 2]
            return count
    
    ############
    
    # 1876. Substrings of Size Three with Distinct Characters
    # https://leetcode.com/problems/substrings-of-size-three-with-distinct-characters/
    
    class Solution:
        def countGoodSubstrings(self, s: str) -> int:
            n = len(s)
            res = 0
            
            for i in range(n - 2):
                if len(set(s[i:i+3])) == 3:
                    res += 1
            
            return res
    
    
  • function countGoodSubstrings(s: string): number {
        const n: number = s.length;
        let count: number = 0;
        for (let i: number = 0; i < n - 2; ++i) {
            let a: string = s.charAt(i),
                b: string = s.charAt(i + 1),
                c: string = s.charAt(i + 2);
            if (a != b && a != c && b != c) {
                ++count;
            }
        }
        return count;
    }
    
    
  • class Solution {
        /**
         * @param String $s
         * @return Integer
         */
        function countGoodSubstrings($s) {
            $cnt = 0;
            for ($i = 0; $i < strlen($s) - 2; $i++) {
                if ($s[$i] != $s[$i + 1] && $s[$i] != $s[$i + 2] && $s[$i + 1] != $s[$i + 2]) $cnt++;
            }
            return $cnt++;
        }
    }
    

All Problems

All Solutions