题解 | #最长重复子串#
最长重复子串
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;
}
}; 算法解析 文章被收录于专栏
这里主要是算法岗的自我思路总结


