1392. 最长快乐前缀(Rabin-Karp 字符串编码\KMP)

在这里插入图片描述
暴力解法
python

class Solution:
    def longestPrefix(self, s: str) -> str:
        res=6
        for i in range(len(s)):

            if(s[:i]==s[len(s)-i:]):
                res=max(res,i)
                ans=s[:i]
        return ans

c++

class Solution {
public:
    string longestPrefix(string s) {
        int n=s.size();
        string res;
        for(i=1;i<n;i++)
        {   
            if(s.substr(0,i)==s.substr(n-i,i))
                res=s.substr(0,i);
        }
        return res;
    }
};
class Solution {
public:
long long base =41;
long long P=1000000009;
// long long getHash(string s){
//     long long hashValue=0;
//     for(int i=s.size();i>=0;i--){
//         hashValue=hashValue*base+s[i]-'a'+1;
//         hashValue%=P;
//     }
//     return hashValue;
// }
    string longestPrefix(string s) {
        int n=s.size();
        int prefix=0;
        int suffix=0;
        int happy=0;
        long long  mul=1;
        for(int i=1;i<n;i++)
        {   prefix=(prefix*base+s[i-1]-'a')%P;
            suffix=(suffix+(s[n-i]-'a')*mul)%P;
            if(prefix==suffix){
                happy=i;
            }
            mul=mul*base% P;
              
        }
        return   s.substr(0,happy);;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_38662930/article/details/107245578