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 <= 100sconsists 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++; } }