![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - Алгоритм Бойер Мура |
|
VBS/WSH/JS - Алгоритм Бойер Мура
|
Новый участник Сообщения: 21 |
var badChar = new Array(); // Создаёт массива, где каждой букве шаблона соответствует индекс её последнего вхождения
var answer = new Array(); // Создаёт массива ответов. Тут лежат индексы вхождений слова "война" в текст var index = 0; // Позиция, на которой находится цикл на данной итерации var iterCount = st2.length - st.length; // Вычисляет кол-во итераций, чтобы не выйти за пределы строки for(var j = 0; j < m - 1 ; j++) // Заполняет массив badChar (индексы с единицы, а не с нуля) badChar[st.charAt(j)] = j + 1 ; while (index <= iterCount){ // Сам поиск: Выполняется пока index <= длине текста минус длине строки var pos = m - 1; // Вычисляет позицию последней буквы шаблона // Вычисляет позицию буквы текста, с которой нужно начинать сравнения while (st2.charAt(index + pos) == st.charAt(pos)){ // Пока символ строки равен символу текста, и правда, то if (pos == 0){ // Если длина строки = 0,то добавляем элемент индекса в массив answer answer.push(index + 1); } pos--; } if(pos == -1) index += m; // Если нет, то увеличиваем index на длину шаблона else if (badChar[st2.charAt(pos + index)] == undefined) index += pos + 1 // Проверка на то, определён ли символ, с которого начиналось сравнение, в словаре badChar else index += Math.max(1,m - badChar[st2.charAt(pos + index)]); // Иначе index увеличиваем на наибольшее значение из (единицы) и (разности длины шаблона и эвристики несовпавшего символа) } if (answer.length==0) WSH.echo("Not found"); else { WSH.echo("Mathces: " + answer.length); WSH.echo(answer.join("\n")); } |
|
Отправлено: 23:18, 25-05-2016 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Алгоритм Бойер-Мура | kudrjavcev | Программирование и базы данных | 0 | 17-04-2016 10:36 | |
Закону Мура исполнилось 50 лет | OSZone News | Новости железа | 1 | 21-04-2015 11:06 | |
Графеновые наноленты могут продлить жизнь закону Мура | OSZone News | Новости железа | 0 | 18-02-2014 14:30 | |
IDF 2012: Intel даёт закону Мура ещё десять лет жизни | OSZone News | Новости информационных технологий | 0 | 17-09-2012 06:30 | |
Закон Мура через десять лет потеряет свою актуальность? | OSZone News | Новости информационных технологий | 1 | 02-05-2012 13:39 |
|