Полагаю, вы говорите о следующем:
for (int i = 1; i <= s.length() - k; i++) { //This line
Если k
- желаемая длина, вам нужно убедиться, что вы не выполняете итерации за пределами строк effective length
, чтобы разрешить все подстроки длины k
. Вычитание k
просто корректирует точку завершения для достижения этой цели.
Вот пример.
k = 5 and string length is 13.
Цель состоит в том, чтобы выполнить итерацию до 8
, поэтому что из 9 thru 13
остается строка длиной 5
. Если мы продолжим дальше, строки будут меньше 5, и может произойти ошибка.
Попробуйте выполнить следующее:
String str = "abcdefghij";
int k = 4;
for (int i = 0; i <= str.length() - k; i++) {
System.out.println(str.substring(i,i+k));
}
Обратите внимание, что последняя подстрока - ghij
, которая является желаемой результат.