leetcode La primera pregunta de la 184ª coincidencia semanal (las cadenas de la matriz coinciden)

 

 Primero, el uso de funciones

1, strstr (a, b);

Determine si b es una subcadena de a, en caso afirmativo, regrese desde el principio de b hasta el final de a

Tales como "abcdefgh" "de"

Devuelve "defgh";

Si no es una subcadena, se devuelve NULL;

2, memcpy (a, b + n, c);

Copie la cadena b de las cadenas c después de la enésima posición en un

(Nota: debe agregar b [c] = '\ 0' después de finalizar la función)

Devuelve una cadena;

Segundo, malloc abre cadenas bidimensionales;

Primero abra un puntero a un puntero de cadena;

char ** arr = ( char **) malloc ( sizeof ( char *) * wordsSize);

Después de determinar la subcadena adecuada para el tema

Abrir un puntero de cadena

arr [cnt] = ( char *) malloc ( sizeof ( char ) * ( strlen (palabras [i]) + 1) );

 

 

El código final es el siguiente

1  char ** stringMatching ( char ** palabras, int wordsSize, int * returnSize) {
 2      int cnt = 0 ;
3      char ** arr = ( char **) malloc ( sizeof ( char *) * wordsSize);
4      para ( int i = 0 ; i <wordsSize; i ++ )
 5      {
 6          for ( int j = 0 ; j <wordsSize; j ++ )
 7          {
8              if (i! = J)
 9              {
 10                  if (strstr (palabras [j], palabras [i])! = NULL)
 11                  {
 12                      arr [cnt] = ( char *) malloc ( sizeof ( char ) * (strlen (palabras [i]) + 1 )); 
 13                      memcpy (arr [cnt], palabras [i], strlen (palabras [i]) + 1 );
 14                     // Las dos líneas anteriores + 1 son para abrir un espacio más para arr [cnt] almacena el '\ 0' al final de las palabras [i] string
 15                     // Porque la longitud devuelta por la función strlen es una longitud que no incluye '\ 0'
 16                     // y el arr devuelto por memcpy después de que la cadena termina El último dígito no es '\ 0'
 17                    // ¡ Asegúrese de recordar agregar '\ 0'! ! De lo contrario, cruzará la frontera. 
18                      cnt ++ ;
 19                      break ;
 20                  }
 21              }
 22          }
 23      }
 24      * returnSize = cnt;
 25      return arr;
 26  
27  
28 }

 (Espero que la próxima pregunta fácil no copie la tarea  ̄ω ̄)

Supongo que te gusta

Origin www.cnblogs.com/luoyoucode/p/12688777.html
Recomendado
Clasificación