Logo

Programming-Idioms

This language bar is your friend. Select your favorite languages!
  • Erlang

Idiom #82 Count substring occurrences

Find how many times string s contains substring t.
Specify if overlapping occurrences are counted.

countOccurence(List1, List2) ->
        countOccurence(List1, List2, 0).

countOccurence(_, [], Count) ->
        Count;
countOccurence(List1, [_ | Rest] = List2, Count) ->
        case (lists:prefix(List1, List2)) of
                true ->
                        countOccurence(List1, Rest, Count + 1);
                false ->
                        countOccurence(List1, Rest, Count)
        end.

countOccurence("ab", "abcddababa").

counts overlapping occurences
#include <string.h>
unsigned n;
for (n = 0; s = strstr(s, t); ++n, ++s)
	;

Overlapping occurrences are counted.
This destroys the pointer s.

New implementation...
< >
deleplace