leetcode 困难题 1392. Longest Happy Prefix 最长快乐前缀
Problem: 1392. Longest Happy Prefix 最长快乐前缀滚动哈希的取基26模1e9 11首先求出字符串的前缀哈希前缀哈希用到了滚动哈希计算方式后缀哈希可以直接套公式求像cbcb前缀哈希这么算2, 2x261, 2x26^2 1x26 2, 2x26^3 1x26^2 2x26 1滚动计算的后缀哈希这么算1 2x26 1x26^2 2x26^3套公式只要前缀哈希和后缀哈希相等就可以拿到长度Codeclass Solution { public: string longestPrefix(string s) { int n s.size(), len -1; unordered_setchar te; for(char c : s) te.insert(c); if(te.size() 1) return s.substr(0, n-1); char start s[0], ch; vectorlong long prefix{0}; long long base 26, mod1e9 11, now 0; for(char c : s) { prefix.push_back( ((prefix.back() * base) (c-a))%mod ); } vectorlong long arr{1}; for(int i 0; i n; i) { arr.push_back((arr.back() * base) % mod); } for(int i n-1; i 1; i--) { ch s[i]; now (now ((ch-a) * arr[n-i-1]) )%mod; if( ch start now prefix[n-i]) len n - i; } if(len 0) return s.substr(0, len); return ; } };
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2419555.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!