C ++中字符串中字符的素数频率的异或

在这个问题中,我们给了一个字符串,我们的任务是打印出现频率是质数的字符串的字符频率的异或。

让我们举个例子来了解这个问题,

输入-nhooo

输出-

在这里,我们将检查字符串中每个字符的出现频率,然后查找所有频率为质数的字符的XOR。为此,将创建一个主要频率阵列。然后,我们将字符串中字符的频率存储在映射中,然后与质数频率数组匹配。如果找到匹配项,则将找到xor,在循环到映射的所有元素时,我们可以找到所需的XOR。

示例

显示我们解决方案实施情况的程序,

#include <bits/stdc++.h>

using namespace std;

void findPrimes(bool prime[], int p_size){

   prime[0] = false;

   prime[1] = false;

   for (int p = 2; p * p <= p_size; p++) {

      if (prime[p]) {

         for (int i = p * 2; i <= p_size; i += p)

            prime[i] = false;

      }

   }

}

int findPrimeXOR(string s){

   bool prime[100005];

   memset(prime, true, sizeof(prime));

   findPrimes(prime, 10005);

   int i, j;

   map<char, int> charFreq;

   for (i = 0; i < s.length(); i++)

      charFreq[s[i]]++;

   int result = 0;

   int flag = 0;

   for (auto i = charFreq.begin(); i != charFreq.end(); i++) {

      if (prime[i->second]) {

         result = result ^ i->second;

         flag = 1;

      }

   }

   if (!flag)

      return -1;

   return result;

}

int main(){

   string s = "nhooo";

   cout<<"The XOR of frequencies of character which have prime frequencies is : ";

   cout<<findPrimeXOR(s);

   return 0;

}

输出结果

The XOR of frequencies of character which have prime frequencies is : 3

以上是 C ++中字符串中字符的素数频率的异或 的全部内容, 来源链接: utcz.com/z/321934.html

回到顶部