题解 | #最长重复子串#
最长重复子串
http://www.nowcoder.com/practice/4fe306a84f084c249e4afad5edf889cc
- 双指针思路,从i从中间开始,然后j每次从头开始。向后来判断相同字母的个数,如果不同的话,立马要把他设置为0. 如果 hyper ==i 得时候,立马返回就行了。(双指针规律总结)
class Solution { public: int solve(string a) { int n = a.length(), hyres = 0; for(int i = n / 2; i > 0; --i) { //枚举长度 for(int j = 0; j < n - i; ++j) { //枚举起点 if(a[j] == a[i + j]) { ++hyres; // 满足判断条件,hyres加一 } else { hyres = 0; // 不满足条件则重置长度 } if(hyres == i) return i * 2; } } return 0; } };
算法解析 文章被收录于专栏
这里主要是算法岗的自我思路总结