Frecuencia de una substring en una string usando pthread

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *