added string KMP algorithm