問題
TC:O(n) 和 SC:O(n)
// using rabin karp hashing approach class Solution { public String shortestPalindrome(String s) { int prefix = 0; int suffix = 0; int lastIndex =-1; int base = 29; int power = 1; int mod = (int)(1e9 + 7); String str = ""; for(int i =0;i<s.length();i++){ int ch = (s.charAt(i)-'a') +1; prefix = (int)((1L * prefix * base) % mod); prefix = (int)((prefix + ch) % mod); suffix = (int)((suffix + 1L * ch * power) % mod); power = (int)((1L * power * base) % mod); if(prefix == suffix){ lastIndex =i; } } str = s.substring(lastIndex+1); return new StringBuilder(str).reverse().toString()+s; } }
以上是Rabin Karp(雜湊)字串模式匹配的詳細內容。更多資訊請關注PHP中文網其他相關文章!