LeetCode 2083. Substrings That Begin and End With the Same Letter Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
2083. Substrings That Begin and End With the Same Letter

Description

You are given a 0-indexed string s consisting of only lowercase English letters. Return the number of substrings in s that begin and end with the same character.

A substring is a contiguous non-empty sequence of characters within a string.

 

Example 1:

Input: s = "abcba"
Output: 7
Explanation:
The substrings of length 1 that start and end with the same letter are: "a", "b", "c", "b", and "a".
The substring of length 3 that starts and ends with the same letter is: "bcb".
The substring of length 5 that starts and ends with the same letter is: "abcba".

Example 2:

Input: s = "abacad"
Output: 9
Explanation:
The substrings of length 1 that start and end with the same letter are: "a", "b", "a", "c", "a", and "d".
The substrings of length 3 that start and end with the same letter are: "aba" and "aca".
The substring of length 5 that starts and ends with the same letter is: "abaca".

Example 3:

Input: s = "a"
Output: 1
Explanation:
The substring of length 1 that starts and ends with the same letter is: "a".

 

Constraints:

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

Solutions

Solution 1: Array or Hash Table

We can use a hash table or an array cnt of length 26 to record the occurrences of each character.

Traverse the string s. For each character c, increment the value of cnt[c] by 1, and then add the value of cnt[c] to the answer.

Finally, return the answer.

The time complexity is O(n), where n is the length of the string s. The space complexity is O(|Σ|), where Σ is the character set. Here, it is lowercase English letters, so |Σ|=26.

PythonJavaC++GoTypeScriptRustJavaScript
class Solution: def numberOfSubstrings(self, s: str) -> int: cnt = Counter() ans = 0 for c in s: cnt[c] += 1 ans += cnt[c] return ans(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !