Как идеально измерить расстояние между определенными символами в строке в строгом порядке?
у меня есть 2 строки в них может быть все что угодно,
я получаю массив массивов,
где в каждом вложеном массиве находятся индексы каждого символа из второй строки в первой строке.
количество этих индексов n так как в первой строке может быть несколько одинаковых символов с разными индексами, мне нужно получить массив индексов символов в строгом порядке и с наименьшим расстоянием между этими символами, то есть к примеру у меня есть такая первая строка:
'смартфон apple iphone 11 256gb purple mhdu3'
вторая строка:
'iphone'
из этого получается такой массив:
[ [ 17 ], [ 10, 11, 18, 33, 36 ], [ 19, 41 ], [ 20 ], [ 21 ], [ 13, 22, 38 ] ]
в итоге его обработки я хочу получить такой
[ 17, 18, 19, 20, 21, 22 ],
соответсвенно если индекс какого-то символа не будет укладываться в строгий порядок, то есть если будет такая ситуация:
[ [17], [11, 9], 18 ]
то надо отловить этот момент и вернуть false
пожалуйста помогите а то я уже дня 3 над этим работаю ничего не получается
Перечитайте вопрос и расставьте точки, иначе местами он похож на бред неспавшего трое суток.
я получаю массив массивов где в каждом вложеном массиве находятся индексы каждого символа из второй строки в первой строке количество этих индексов n так как в первой строке может быть несколько одинаковых символов с разными индексами
Александр, тем что он ищет первое вхождение подстроки, да и если я найду только первый это не подойдет потому что дальше можно найти этот же символ но который будет гораздо ближе к остальным символам а прикол как раз в том что бы найти порядок индексов с наименьшим расстоянием друг к другу и в строгом порядке
Димаш Кенжегалиев, Что? Если Вам indexOf нашел вхождение, значит порядок индексов "в строгом порядке" и "имеет наименьшее расстояние". Чего Вы хотите добиться?
Александр, он будет строгом порядке, если я буду искать сразу всю подстроку а не по символам, но мне нужно именно измерить расстояние между каждым символом в строгом порядке что бы даже если 'iphone' будет написано с ошибкой он все равно мне его выдал, то есть я хочу измерить среденее арифметическое расстояние между символами в строгом порядке для всех отобранных товаров что бы их в дальнейшем отсортировать по этому параметру
Берем первый элемент первого массива и проходим по остальным массивам, выбирая первый из элементов очередного массива, который больше выбранного на предыдущем этапе. Если такого не нашлось - ошибка. Чего тут три дня работать-то?
А вообще решение, имхо, попахивает оверинжинирингом.
Что мешает найти решение в простом цикле "ищем первую позицию очередного символа в подстроке от предыдущего найденного до конца строки"? На хрена их все перебирать?
Димаш Кенжегалиев, от того, как выбраны позиции всех символов, кроме первого и последнего, компактность их расположения не изменится.
Так что вам просто нужно работать не с исходной строкой, а с подстрокой, выбранной регуляркой /i.*p.*h.*o.*n.*e/ - если такой нет, то это ваша ошибка, а если есть - это, при условии нежадной регулярки, и есть самое компактное расположение символов.