  String matching is the problem of finding all the substrings of a text which
match a given pattern. It is one of the most investigated problems in computer
science, mainly due to its very diverse applications in several fields.
Recently, much research in the string matching field has focused on the
efficiency and flexibility of the searching procedure and quite effective
techniques have been proposed for speeding up the existing solutions. In this
context, algorithms based on factors recognition are among the best solutions.
In this paper, we present a simple and very efficient algorithm for string
matching based on a weak factor recognition and hashing. Our algorithm has a
quadratic worst-case running time. However, despite its quadratic complexity,
experimental results show that our algorithm obtains in most cases the best
running times when compared, under various conditions, against the most
effective algorithms present in literature. In the case of small alphabets and
long patterns, the gain in running times reaches 28%. This makes our proposed
algorithm one of the most flexible solutions in practical cases.
