天天看點

字元串hash + 二分答案 - 求最長公共子串 --- poj 2774 Long Long MessageProblem's Link:http://poj.org/problem?id=2774

Mean: 

 求兩個字元串的最長公共子串的長度。

analyse:

 前面在學習字尾數組的時候已經做過一遍了,但是現在主攻字元串hash,再用字元串hash寫一遍。

這題的思路是這樣的:

1)取較短的串的長度作為high,然後二分答案(每次判斷長度為mid=(low+high)>>1是否存在,如果存在就增加下界;不存在就縮小上界);

2)主要是對答案的判斷(judge函數)。具體參看代碼注釋。

Time complexity:O(n)

Source code:

注釋代碼: