tengo una matriz:encontrar la mayoría de las cadenas repetidas sub en orden
$myArray=array(
'hello my name is richard',
'hello my name is paul',
'hello my name is simon',
'hello it doesn\'t matter what my name is'
);
Necesito encontrar la subcadena (mínimo 2 palabras) que se repite con más frecuencia, tal vez en un formato de matriz, por lo que mi regreso matriz podría tener este aspecto:
$return=array(
array('hello my', 3),
array('hello my name', 3),
array('hello my name is', 3),
array('my name', 4),
array('my name is', 4),
array('name is', 4),
);
por lo que puedo ver en esta matriz de matrices con qué frecuencia se repite cada cadena entre todas las cadenas de la matriz.
es la única manera de hacerlo de esta manera? ..
function repeatedSubStrings($array){
foreach($array as $string){
$phrases=//Split each string into maximum number of sub strings
foreach($phrases as $phrase){
//Then count the $phrases that are in the strings
}
}
}
He intentado una solución similar a la anterior pero era demasiado lento, el procesamiento de alrededor de 1000 filas por segundo, ¿alguien puede hacerlo ¿Más rápido?
Me recuerda al mapa reducir. – Layke
¿solo necesita la subcadena repetida más a menudo? o ¿necesitas el conteo para cada posible subcadena? estas son dos preguntas muy diferentes. –
@BenLee: Realmente solo necesito que la subcadena se repita con más frecuencia, pero si es posible, me gustaría saber cuál fue la siguiente. – Drahcir