首先:min是那个比较短的字符串,
在y和z的这个循环中
举例:当x=0时,也就是第一次循环
此时y=0,z=min.length();
temp其实就是等于min这个字符串,y++没问题,z++后等于min.leng()+1,内循环就结束了
接着外循环,x=1时,内循环(如果一直不满足匹配条件的话)循环2次,z的值就不符合循环条件,
内循环就要结束了,这两次内循环中(y=0;z=min.length()-1);(y=1,z=min.length()).
举个简单的例子,加入短的字符串为min="12345",
首先min当中包含的最大字符串就是"12345",此时就是外循环x=0时,
不符合条件,接着向下判断,最长的字符串就是"1234"和"2345",c此时就是外循环x=1时,
如果还不符合条件,需要判断的字符串就是"123";“234”;“345”这三个,以此类推:
其实内循环中的初始值:y就是每次都从0角标开始,z就是每一轮内循环中字符串的长度,如上面的例子,
分别是5,4,3...,内循环中当z的值自增到字符串的边界也就是min.length()+1时,结束内循环。
不知道我说的够不够详细,其实作图解释的话更清楚,希望能对你有所帮助。 |