Конечно, подобных вопросов задавалось несчитанное количество, но, как по мне, у меня немного другая ситуация - нужно находить как минимум 2 общих символа, а не 1; так ещё и сделать это на нескольких участках.
Я перепробовал несколько вариантов для своей ситуации, но все они не подошли, из-за чего попробовал создать свой метод:
const one = fs.readFileSync(path.join(__dirname, "uploads", "sequence (1).txt")).toString();
const two = fs.readFileSync(path.join(__dirname, "uploads", "sequence (2).txt")).toString();
let result, data = "";
for (let i = 0; i < one.length; i += 2) {
if (one[i] == two[i] && one[i + 1] == two[i + 1]) {
result += one[i] + one[i + 1];
data += " " + i;
}
}
console.log(result, data);
Способ ниочёмный, потому что for прыгает через каждые два символа, проверяя их на совпадение. Но если будет, например, ситуация, когда есть две строки: "1112" и "1113", то в результате я получу не "111", а "11", ведь for посмотрит первые 2 символа, потом перейдёт на сравнение следующей пары - "12" и "13".
Конечно, можно сделать для i шаг всего в 1 единицу, однако тогда он, как вы понимаете, начнёт выводить повторяющиеся символы в ответ, так как будет захватывать конец предыдущей пары в каждой итерации.
Подскажите, пожалуйста, как можно решить проблему?
* на переменную data внимания не обращайте.