Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 
 
 

Boyer–Moore–Horspool Search

An naive implementation of Boyer–Moore–Horspool algorithm that works with Array & TypedArray

Installation

npm install git+https://github.com/Chocobo1/bmhs.git

Usage example

const Bmh = require('bmhs');  // import this module

// working with TypedArray
{
    const pattern = Uint32Array.from([0xFFFF, 0x3000]);
    const corpus = Uint32Array.from([0xFFFF, 0xFFFF, 0x3000, 0x1000]);

    // setup `bmh` for later reuse
    const bmh = Bmh.BoyerMooreHorspool(pattern);
    // returns the first index of the exact match in `corpus`; -1 if not found
    const idx = bmh.match(corpus);
    if (idx !== 1)
        throw (new Error('Please file an issue'));
}

// also working with String
{
    const pattern = "pattern";
    const corpus = "some pattern !@#$%";

    const bmh = Bmh.BoyerMooreHorspool(pattern);
    const idx = bmh.match(corpus);
    if (idx !== corpus.indexOf(pattern))
        throw (new Error('Please file an issue'));
}

// you can specify offset!
{
    const pattern = "123";
    const corpus = "123abc123";
    const corpusOffset = 1;

    const idx = Bmh.BoyerMooreHorspool(pattern).match(corpus, corpusOffset);
    if (idx !== corpus.indexOf(pattern, corpusOffset))
        throw (new Error('Please file an issue'));
}

Run tests

npm install -D  # install dev dependencies
npm test        # run tests

References

See also

You might be interested to Knuth–Morris–Pratt algorithm

License

See LICENSE file

About

Boyer–Moore–Horspool algorithm that works with JS Array & TypedArray

Topics

Resources

License

Releases

No releases published

Packages

No packages published