![]() |
VOOZH | about |
Given two strings s and t. The task is to find maximum length of some prefix of the string S which occur in string t as subsequence.
Examples :
Input : s = "digger" t = "biggerdiagram" Output : 3 digger biggerdiagram Prefix "dig" of s is longest subsequence in t. Input : s = "geeksforgeeks" t = "agbcedfeitk" Output : 4
A simple solutions is to consider all prefixes one by one and check if current prefix of s[] is a subsequence of t[] or not. Finally return length of the largest prefix.
An efficient solution is based on the fact that to find a prefix of length n, we must first find the prefix of length n - 1 and then look for s[n-1] in t. Similarly, to find a prefix of length n - 1, we must first find the prefix of length n - 2 and then look for s[n - 2] and so on.
Thus, we keep a counter which stores the current length of prefix found. We initialize it with 0 and begin with the first letter of s and keep iterating over t to find the occurrence of the first letter. As soon as we encounter the first letter of s we update the counter and look for second letter. We keep updating the counter and looking for next letter, until either the string s is found or there are no more letters in t.
Below is the implementation of this approach:
3
Time complexity: O(n)
Space complexity: O(1)