Re: Occurrence of a substring inside a list of strings

*To*: mathgroup at smc.vnet.net*Subject*: [mg51225] Re: [mg51203] Occurrence of a substring inside a list of strings*From*: Andrzej Kozlowski <akoz at mimuw.edu.pl>*Date*: Sat, 9 Oct 2004 04:18:39 -0400 (EDT)*References*: <200410080654.CAA24974@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

On 8 Oct 2004, at 15:54, János wrote: > *This message was transferred with a trial version of CommuniGate(tm) > Pro* > Hi, > > I have a simple list of strings like lst={"abc", "abcd", > "aabccaddbacdda", "adbacca",....}. Let's say I have a fragment called > frag="dba". I would like to know how many strings in lst contain > minimum once the fragment frag. > > This is what I did: > > Length[Flatten[Map[Part[StringPosition[#, frag], All, 1] &,lst] ] ] > > Is there a better/faster way to calculate it ? > > Thanks ahead, > > János > ---------------------------------------------- > Trying to argue with a politician is like lifting up the head of a > corpse. > (S. Lem: His Master Voice) > > I am not sure about "better" or faster (it is quicker to write this sort of program than to test how fast it is). One can produce lots of version using ideas similar to yours, e.g. Count[(StringPosition[#1, frag, 1] & ) /@ lst, _?(#1 != {} & )] 2 or Length[Join @@ (StringPosition[#1, frag, 1] & ) /@ lst] 2 But the method that seems the most elegant to me (I have not tested it for speed though) is: Count[lst, _?(StringMatchQ[#1, StringJoin["*", frag, "*"]] & )] 2 Andrzej Kozlowski Chiba, Japan http://www.akikoz.net/~andrzej/ http://www.mimuw.edu.pl/~akoz/

**References**:**Occurrence of a substring inside a list of strings***From:*János <janos.lobb@yale.edu>