事实上你可以理解成i和j是互相独立的只是其中的某一个为最小的串的待定值,另一个为用来比较的串;
解释一下为什么i j取值时会是Math.max()的形式,对i,j两个可能的最小子串位置,当出现t != 0的情况时,说明其中一处不满足最小子串的条件,不妨设i处不满足,此时可能的最小子串位置是j,所以另一个可能的最小子串位置一定在j的后面,j的前面可不可能呢,不可能,如果可能最小子串位置就不会是到j,而是在j前的那个位置了,能到j说明从i+1到j-1的位置都不是最小子串位置,此时i不满足条件,可能位置一定在j之后,又上面分析知i+1到i+k也不会是最小子串位置,所以最小子串位置是Math.max(i+k+1 j+1),对j位置不满足最小子串时的分析也一样