BVB Source Codes

Algorithm-Implementations Show bmh.js Source code

Return Download Algorithm-Implementations: download bmh.js Source code - Download Algorithm-Implementations Source code - Type:.js
  1. // Boyer鈥揗oore鈥揌orspool algorithm (or Horspool's algorithm) is an algorithm
  2. // for finding substrings in strings.
  3.  
  4. function boyer_moore_horspool(haystack, needle) {
  5.     var badMatchTable = {},
  6.         maxOffset = (haystack.length - needle.length),
  7.         last = (needle.length - 1),
  8.         offset = 0,
  9.         scan;
  10.  
  11.     // Generate the "bad match table", which is the location of offsets
  12.     // to jump forward when a comparison fails
  13.     Array.prototype.forEach.call(needle, function (char, i) {
  14.         badMatchTable[char] = (last - i);
  15.     });
  16.  
  17.     // Now look for the needle
  18.     while (offset <= maxOffset) {
  19.         // Search right-to-left, checking to see if the current offset at
  20.         // needle and haystack match.  If they do, rewind 1, repeat, and if we
  21.         // eventually match the first character, return the offset.
  22.         for (scan=last; needle[scan] === haystack[scan+offset]; scan--) {
  23.             if (scan === 0) {
  24.               return offset;
  25.             }
  26.         }
  27.  
  28.         offset += (badMatchTable[haystack[offset + last]] || last+1);
  29.     }
  30.  
  31.     return -1;
  32. }
  33.  
  34. var stringLocation = boyer_moore_horspool('Because sometimes algorithms are more fun than str.search()', 'algorithms');
  35.  
  36. console.log(stringLocation); // 18
  37.  
downloadbmh.js Source code - Download Algorithm-Implementations Source code
Related Source Codes/Software:
raty - 2017-04-22
RDVTabBarController - Highly customizable tabBar and tabBarController fo... 2017-04-22
material-icon-lib - Library containing over 1500 material vector icons... 2017-04-21
httpdiff - Perform the same request against two HTTP servers ... 2017-04-21
jquerytools - The missing UI library for the Web ... 2017-04-21
mcrouter - Mcrouter is a memcached protocol router for scalin... 2017-04-22
dynomite - A generic dynamo implementation for different k-v ... 2017-04-22
kityminder - Baidu brain figure 2017-04-22
llvm - Mirror of official llvm git repository located at ... 2017-04-22
RBBAnimation - Block-based animations made easy, comes with easin... 2017-04-22
ied - 2017-04-29
Nimble - A Matcher Framework for Swift and Objective-C 2017-04-29
MHVideoPhotoGallery - A Photo and Video Gallery 2017-04-29
shoulda-matchers - Collection of testing matchers extracted from Shou... 2017-04-29
Android-SlideExpandableListView - A better ExpandableListView, with animated expanda... 2017-04-29
AppSales-Mobile - App Sales allows iPhone and Mac App Store develope... 2017-04-29
react-templates - Light weight templates for react ... 2017-04-28
afterglow-theme - A minimal dark Theme for Sublime Text 2 and 3 2017-04-28
jwt-go - Golang implementation of JSON Web Tokens (JWT) 2017-04-28
DeerResume - Tool MarkDown online resume, online preview, edit,... 2017-04-28

 Back to top