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 <= 105scontains only lowercase English letters.
Intuition
Approach :
Apply KMP to find largest match of Suffix and PrefixLinks
https://leetcode.com/problems/longest-happy-prefix/description/
Video Links
Approach 1:
KMPclass 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