Find Beautiful Indices in the Given Array II
Find Beautiful Indices in the Given Array II is a Hard Data Structures and Algorithms interview problem you can solve, run and submit on Thita.ai. It belongs to the String Manipulation Patterns pattern, in the Naive / KMP / Rabin-Karp subpattern.
Problem statement
You are given a 0-indexed string s, a string a, a string b, and an integer k.
An index i is beautiful if:
- 0 <= i <= s.length - a.length
- s[i..(i + a.length - 1)] == a
- There exists an index j such that:
- 0 <= j <= s.length - b.length
- s[j..(j + b.length - 1)] == b
- |j - i| <= k
Return the array that contains beautiful indices in sorted order from smallest to largest.
Example 1:
Input: s = "isawsquirrelnearmysquirrelhouseohmy", a = "my", b = "squirrel", k = 15 Output: [16,33] Explanation: There are 2 beautiful indices: [16,33]. - The index 16 is beautiful as s[16..17] == "my" and there exists an index 4 with s[4..11] == "squirrel" and |16 - 4| <= 15. - The index 33 is beautiful as s[33..34] == "my" and there exists an index 18 with s[18..25] == "squirrel" and |33 - 18| <= 15. Thus we return [16,33] as the result.
Example 2:
Input: s = "abcd", a = "a", b = "a", k = 4 Output: [0] Explanation: There is 1 beautiful index: [0]. - The index 0 is beautiful as s[0..0] == "a" and there exists an index 0 with s[0..0] == "a" and |0 - 0| <= 4. Thus we return [0] as the result.
Constraints:
- 1 <= k <= s.length <= 5 105
- 1 <= a.length, b.length <= 5 105
- s, a, and b contain only lowercase English letters.
Topics and companies
Topics: Two Pointers, String, Binary Search, Rolling Hash, String Matching, Hash Function.
How to practise Find Beautiful Indices in the Given Array II on Thita.ai
Starter code is provided in C, C#, C++, Go, Java, JavaScript and Python. Your solution runs against 5 test cases for this problem, with the AI coach available for a hint when you are stuck rather than a finished answer. The reference solution runs in O(n), x = len(KMP(s, a)), y = len(KMP(s, b)) time and O(min(a + b + x + y, n)) space.
Open Find Beautiful Indices in the Given Array II in the code editor, or read the Find Beautiful Indices in the Given Array II editorial for a worked solution with its approach and complexity analysis.
Where Find Beautiful Indices in the Given Array II sits in the DSA pattern sheet
- String Manipulation Patterns pattern guide
- Naive / KMP / Rabin-Karp subpattern
- The full DSA patterns sheet
- All coding practice problems
Problems related to Find Beautiful Indices in the Given Array II
Other problems that use the same Naive / KMP / Rabin-Karp and String Manipulation Patterns techniques:
- Find the Index of the First Occurrence in a String — Easy, same subpattern
- Repeated String Match — Medium, same subpattern
- Rotate String — Easy, same subpattern
- Shortest Palindrome — Hard, same subpattern
- Add Strings — Easy, same pattern
- Integer to Roman — Medium, same pattern