classSolution{public:intlongestRepeatingSubstring(stringS){constintn=S.length();intans=0;// dp[i][j] := # of repeating chars of S[0..i) and S[0..j)vector<vector<int>>dp(n+1,vector<int>(n+1));for(inti=1;i<=n;++i)for(intj=i+1;j<=n;++j)if(S[i-1]==S[j-1]){dp[i][j]=1+dp[i-1][j-1];ans=max(ans,dp[i][j]);}returnans;}};
classSolution{publicintlongestRepeatingSubstring(StringS){finalintn=S.length();intans=0;// dp[i][j] := # of repeating chars of S[0..i) and S[0..j)int[][]dp=newint[n+1][n+1];for(inti=1;i<=n;++i)for(intj=i+1;j<=n;++j)if(S.charAt(i-1)==S.charAt(j-1)){dp[i][j]=1+dp[i-1][j-1];ans=Math.max(ans,dp[i][j]);}returnans;}}