题解 | #NC142 最长重复子串#

最长重复子串

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

货拉拉考过
利用双指针
图片说明

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 
     * @param a string字符串 待计算字符串
     * @return int整型
     */
    public int solve (String a) {
        // write code here
        int max = 0;
        for (int i = 1; i < a.length(); i++) {
            int count = 0;
            for (int j = 0; j < a.length() && j + i < a.length(); j++) {
                if (a.charAt(j) == a.charAt(j + i)) count++;
            }
            if (i == count) max = Math.max(max, count);
        }
        return max * 2;
    }
}
全部评论
博主思路总体是对的,我也是沿着博主思路想的,首先谢谢博主。但是现在过不了check,我发现两个问题,第一个:17行代码无法保证重复的连续性,比如“aacc”就过不去。当不等时,count应该置为零。第二个:19行的代码午饭保证获取到一次循环的最大count,可以放到循环内,并且i == count时break。 下面时改过之后的代码(C++): class Solution { public: int solve(string a) { // write code here int imax = 0; int n = a.size(); for(int i = 1; i < n; i++) { int count = 0; for(int j = 0; j < n && i + j < n;j++) { if(a[j] == a[i+j]){ count++; }else{ count = 0; } if(i == count) { imax = max(imax, i); break; } } } return imax * 2; } };
点赞
送花
回复
分享
发布于 2023-08-06 21:15 江苏

相关推荐

6 收藏 评论
分享
牛客网
牛客企业服务