题解 | #最长重复子串#

最长重复子串

http://www.nowcoder.com/practice/4fe306a84f084c249e4afad5edf889cc

class Solution {
public:
    //对具体的起点与长度,确认字符串是否为重复拼接形式
    bool check(string& a, int len, int begin) {
        for(int i = begin; i < len + begin; ++i) {
            if(a[i] != a[i + len]) {
                //这说明字符串肯定不存在重复拷贝在其后面,返回false
                return false;
            }
        }
        return true;//这说明在这个字符串后面存在它的拷贝
    }
 
    int solve(string a) {
        int n = a.length();
        for(int i = n / 2; i > 0; --i) {//枚举长度
            for(int j = 0; j <= n - i - i; ++j) {//枚举起点
                //起点要保证两个字符串拼接后长度不会大于原字符串
                if(check(a, i, j)) {
                    return 2 * i;//说明找到了重复字符串,长度即为枚举长度两边
                }
            }
        }
        return 0;
    }
};
全部评论

相关推荐

怎么起名字:早知道就不读书了,害得我送外卖还得扶眼镜
点赞 评论 收藏
分享
07-05 16:23
门头沟学院 Java
mengnankk:我投了300,约了5 6个面试。感觉项目写的太多了。一个项目就写五六个亮点,不是把整个项目的功能描述下。其他的没啥,简历看起来有点长
点赞 评论 收藏
分享
牛客38347925...:9,2学生暑期实习失利开始投小厂,给这群人整自信了
点赞 评论 收藏
分享
昨天 11:05
门头沟学院 运营
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务