Table of Contents
Given a string s and some of the pairs (L,R), write a function that will output the length of the longest sub string starting at L and R
Example
INPUT
s = “abcbabcb”
Queries : (1,3), (1,5), (0,1)
OUTPUT
1, for (1,3) starting at index 1 we have ‘b’ and at index 3 also we have ‘b’, but other characters dont match 3 for (1,5) starting at index 1 we have “bcb” and at index 5 we have “bcb” 0 for (0,1) charcters dont match
Algorithm
For each LCE query
1. Initialize length to 0
2. start comparing the characters starting from the indexes L and R
3. If the characters match, then this character is in Longest Common Extension so increament length
4. Else, if the characters mismatch then return the length
C++ Program
#include<bits/stdc++.h>
using namespace std;
//function to find LCE
int LCE(string str, int n, int L, int R)
{
int length = 0;
//till characters dont match
while (str[L+length] == str[R+length] &&
R+length < n)
length++;
return(length);
}
int main()
{
int L = 1;
int R = 5;
string str = "abcbabcb";
int n = str.length();
cout<<LCE(str, n, L, R);
return (0);
}