LeetCode 1794. Count Pairs of Equal Substrings With Minimum Difference
You are given two strings firstString and secondString that are 0-indexed and consist only of lowercase English letters. Count the number of index quadruples (i,j,a,b) that satisfy the following conditions:
0 <= i <= j < firstString.length0 <= a <= b < secondString.lengthThe substring of
firstStringthat starts at theithcharacter and ends at thejthcharacter (inclusive) is equal to the substring ofsecondStringthat starts at theathcharacter and ends at thebthcharacter (inclusive).j - ais the minimum possible value among all quadruples that satisfy the previous conditions.
Return the number of such quadruples.
Example 1:
Input: firstString = "abcd", secondString = "bccda"
Output: 1
Explanation: The quadruple (0,0,4,4) is the only one that satisfies all the conditions and minimizes j - a.Example 2:
Input: firstString = "ab", secondString = "cd"
Output: 0
Explanation: There are no quadruples satisfying all the conditions.Constraints:
1 <= firstString.length, secondString.length <= 2 * 10^5Both strings consist only of lowercase English letters.
Solution
class Solution {
public:
int countQuadruples(string firstString, string secondString) {
unordered_map<char, int> last_occurence;
for (int i = 0; i < secondString.length(); i++) {
last_occurence[secondString[i]] = i;
}
int minimum_j_minus_a = INT_MAX;
int cnt = 0;
for (int i = 0; i < firstString.length(); i++) {
char ch = firstString[i];
if (last_occurence.count(ch) > 0) {
int j_minus_a = i - last_occurence[ch];
if (j_minus_a < minimum_j_minus_a) {
minimum_j_minus_a = j_minus_a;
cnt = 1;
} else if (j_minus_a == minimum_j_minus_a) {
cnt++;
}
}
}
return cnt;
}
};Last updated
Was this helpful?