Dada una string de entrada y una substring. Encuentre la frecuencia de aparición de una substring en la string dada usando pthreads .
Ejemplos:
Input: string = "man" substring = "dhimanman" Output: 2 Input: string = "banana" substring = "nn" Output: 0
Nota: Se recomienda ejecutar el programa en un sistema basado en Linux.
Compile en Linux usando el siguiente código:
g++ -pthread program_name.cpp
Programa:
// C++ program to find the frequency // of occurrences of a substring // in the given string using pthread #include <iostream> #include <pthread.h> #include <stdlib.h> #include <sys/types.h> #include <time.h> #include <unistd.h> #define max 4 using namespace std; int count[max] = { 0 }; string str, sub; void* str_seq_count(void* args) { int value = *(int*)args; int i, j, k, l1, l2, flag; // calculating length of string 1 l1 = str.length(); // calculating length of substring l2 = sub.length(); for (i = 0 + value; i < l1; i = i + max) { flag = 0; k = i; for (j = 0; j < l2; j++) { // flag=0; if (sub[j] == str[k]) k++; else { flag = 1; break; } } if (flag == 0) count[value] += 1; } } // Driver code int main() { int sum = 0; int x[max]; for (int a = 0; a < max; a++) x[a] = a; str = "prrrogramisprrrogramming"; sub = "rr"; cout << "Enter the main string: " << str << endl; cout << "Enter the sequence to search: " << sub << endl; int i, l1; pthread_t tid[max]; for (i = 0; i < max; i++) { pthread_create(&tid[i], NULL, str_seq_count, (void*)&x[i]); } for (i = 0; i < max; i++) pthread_join(tid[i], NULL); for (i = 0; i < max; i++) sum = sum + count[i]; cout << "Frequency of substring: " << sum; return 0; }
Producción:
Enter the main string: prrrogramisprrrogramming Enter the sequence to search: rr Frequency of substring: 4
Artículo relacionado: Frecuencia de una substring en una string
Publicación traducida automáticamente
Artículo escrito por Akashkumar17 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA