1392. Longest Happy Prefix
Problem Statement
A string is called a happy prefix if is a non-empty prefix which is also a suffix (excluding itself).
Given a string s
, return the longest happy prefix of s
. Return an empty string ""
if no such prefix exists.
Example 1:
Input: s = "level"
Output: "l"
Explanation: s contains 4 prefix excluding itself ("l", "le", "lev", "leve"), and suffix ("l", "el", "vel", "evel"). The largest prefix which is also suffix is given by "l".
Example 2:
Input: s = "ababab"
Output: "abab"
Explanation: "abab" is the largest prefix which is also suffix. They can overlap in the original string.
Constraints:
1 <= s.length <= 105
s
contains only lowercase English letters.
Intuition
Approach :
Apply KMP to find largest match of Suffix and Prefix
Links
https://leetcode.com/problems/longest-happy-prefix/description/
Video Links
Approach 1:
KMP
class Solution {
public:
string longestPrefix(string s) {
vector<int> lps(s.size(), 0);
int prev=0, i=1;
while(i<s.size()){
if(s[i] == s[prev]){
lps[i] = prev + 1;
prev++; i++;
}
else if(prev == 0){
lps[i] = 0;
i++;
}
else
prev = lps[prev-1];
}
int last_val = lps.back();
return s.substr(0, last_val);
}
};
Approach 2:
Approach 3:
Approach 4:
Similar Problems
Last updated