Maximum length prefix of one string that occurs as subsequence in another - GeeksforGeeks

14 Jun, 2021
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 on 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:  
C++
Java
Python 3
C#
PHP
Javascript
// C++ program to find maximum// length prefix of one string// occur as subsequence in another// string.#include<bits/stdc++.h>using namespace std; // Return the maximum length// prefix which is subsequence.int maxPrefix(char s[], char t[]){    int count = 0;     // Iterating string T.    for (int i = 0; i < strlen(t); i++)    {        // If end of string S.        if (count == strlen(s))            break;         // If character match,        // increment counter.        if (t[i] == s[count])            count++;    }     return count;} // Driven Codeint main(){    char S[] = "digger";    char T[] = "biggerdiagram";     cout << maxPrefix(S, T)         << endl;     return 0;}
// Java program to find maximum// length prefix of one string// occur as subsequence in another// string.public class GFG {             // Return the maximum length    // prefix which is subsequence.    static int maxPrefix(String s,                         String t)    {        int count = 0;             // Iterating string T.        for (int i = 0; i < t.length(); i++)        {            // If end of string S.            if (count == s.length())                break;                 // If character match,             // increment counter.            if (t.charAt(i) == s.charAt(count))                count++;        }             return count;    }         // Driver Code    public static void main(String args[])    {        String S = "digger";        String T = "biggerdiagram";             System.out.println(maxPrefix(S, T));    }}// This code is contributed by Sumit Ghosh
# Python 3 program to find maximum# length prefix of one string occur# as subsequence in another string.  # Return the maximum length# prefix which is subsequence.def maxPrefix(s, t) :    count = 0     # Iterating string T.    for i in range(0,len(t)) :                 # If end of string S.        if (count == len(s)) :            break         # If character match,        # increment counter.        if (t[i] == s[count]) :            count = count + 1                  return count  # Driver CodeS = "digger"T = "biggerdiagram" print(maxPrefix(S, T))  # This code is contributed# by Nikita Tiwari.
// C# program to find maximum// length prefix of one string// occur as subsequence in// another string.using System; class GFG{             // Return the maximum length prefix    // which is subsequence.    static int maxPrefix(String s,                         String t)    {        int count = 0;             // Iterating string T.        for (int i = 0; i < t.Length; i++)        {            // If end of string S.            if (count == s.Length)                break;                 // If character match,            // increment counter.            if (t[i] == s[count])                count++;        }             return count;    }         // Driver Code    public static void Main()    {        String S = "digger";        String T = "biggerdiagram";             Console.Write(maxPrefix(S, T));    }} // This code is contributed by nitin mittal
<?php// PHP program to find maximum// length prefix of one string// occur as subsequence in another// string. // Return the maximum length// prefix which is subsequence.function maxPrefix($s, $t){    $count = 0;     // Iterating string T.    for ($i = 0; $i < strlen($t); $i++)    {        // If end of string S.        if ($count == strlen($s))            break;         // If character match,        // increment counter.        if ($t[$i] == $s[$count])            $count++;    }     return $count;} // Driver Code{    $S = "digger";    $T = "biggerdiagram";     echo maxPrefix($S, $T) ;     return 0;} // This code is contributed by nitin mittal.?>
<script> // JavaScript program to find maximum// length prefix of one string// occur as subsequence in another// string.     // Return the maximum length    // prefix which is subsequence.    function maxPrefix(s,t)    {        let count = 0;             // Iterating string T.        for (let i = 0; i < t.length; i++)        {            // If end of string S.            if (count == s.length)                break;                 // If character match,             // increment counter.            if (t[i] == s[count])                count++;        }             return count;    }  // Driver Code     let S = "digger";    let T = "biggerdiagram";         document.write(maxPrefix(S, T));         </script>
Output:  
3
 
YouTubeGeeksforGeeks507K subscribersMaximum length prefix of one string that occurs as subsequence in another | GeeksforGeeksWatch laterShareCopy linkInfoShoppingTap to unmuteIf playback doesn't begin shortly, try restarting your device.You're signed outVideos you watch may be added to the TV's watch history and influence TV recommendations. To avoid this, cancel and sign in to YouTube on your computer.CancelConfirmMore videosMore videosSwitch cameraShareInclude playlistAn error occurred while retrieving sharing information. Please try again later.Watch on0:000:000:00 / 2:56•Live•<div class="player-unavailable"><h1 class="message">An error occurred.</h1><div class="submessage"><a href="https://www.youtube.com/watch?v=PKtKEKsCcKk" target="_blank">Try watching this video on www.youtube.com</a>, or enable JavaScript if it is disabled in your browser.</div></div>
This article is contributed by Anuj Chauhan. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
nitin mittal
nidhi_biet
miegir
susmitakundugoaldanga
subsequence
Pattern Searching
Strings
Strings
Pattern Searching
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Check if an URL is valid or not using Regular Expression
How to check if string contains only digits in Java
Check if a string contains uppercase, lowercase, special characters and numeric values
Applications of String Matching Algorithms
Suffix Array | Set 1 (Introduction)
Write a program to reverse an array or string
Reverse a string in Java
Write a program to print all permutations of a given string
C++ Data Types
Longest Common Subsequence | DP-4