Таким образом, концептуально вам необходимо поддерживать смещение количества совпавших символов, каждый раз, когда возникает несоответствие, вы сбрасываете смещение обратно на 0
.Это смещение используется, чтобы определить, соответствует ли данный символ на входе следующему символу в файле
Простая реализация может выглядеть примерно так ...
String value = "Thistestistestatesttest";
String input = "test";
int offset = 0;
int matches = 0;
for (char next : value.toCharArray()) {
if (next == input.charAt(offset)) {
offset++;
if (offset == input.length()) {
matches++;
offset = 0;
}
} else {
offset = 0;
}
}
System.out.println("Found " + matches);
Обратите внимание, я имеюсознательно использовал String
в качестве источника, так что вы можете проверить его и лучше понять, как он работает, и использовать логику для реализации своего собственного решения.
Теперь, если вы потратите время на настольную проверкупроблема, это может выглядеть примерно так ...
+======+========+==============+=======+x
| Next | offset | offset value | match |
+======+========+==============+=======+
| T | 0 | t | false |
+------+--------+--------------+-------+
| h | 0 | t | false |
+------+--------+--------------+-------+
| i | 0 | t | false |
+------+--------+--------------+-------+
| s | 0 | t | false |
+------+--------+--------------+-------+
| t | 0 | t | true |
+------+--------+--------------+-------+
| e | 1 | e | true |
+------+--------+--------------+-------+
| s | 2 | s | true |
+------+--------+--------------+-------+
| t | 3 | t | true |
+------+--------+--------------+-------+
| i | 0 | t | false |
+------+--------+--------------+-------+
| s | 0 | t | false |
+------+--------+--------------+-------+
| t | 0 | t | true |
+------+--------+--------------+-------+
| e | 1 | e | true |
+------+--------+--------------+-------+
| s | 2 | s | true |
+------+--------+--------------+-------+
| t | 3 | t | true |
+------+--------+--------------+-------+
| a | 0 | t | false |
+------+--------+--------------+-------+
| t | 0 | t | true |
+------+--------+--------------+-------+
| e | 1 | e | true |
+------+--------+--------------+-------+
| s | 2 | s | true |
+------+--------+--------------+-------+
| t | 3 | t | true |
+------+--------+--------------+-------+
| t | 0 | t | true |
+------+--------+--------------+-------+
| e | 1 | e | true |
+------+--------+--------------+-------+
| s | 2 | s | true |
+------+--------+--------------+-------+
| t | 3 | t | true |
+------+--------+--------------+-------+