Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 모든 소수 길이 회문 부분 문자열 계산

<시간/>

이 자습서에서는 소수 길이 회문 문자열의 수를 찾는 프로그램에 대해 설명합니다.

이를 위해 문자열이 제공됩니다. 우리의 임무는 회문이고 소수 길이를 갖는 모든 하위 문자열을 계산하는 것입니다.

예시

#include <bits/stdc++.h>
using namespace std;
//checking for a palindrome
bool if_palin(string str, int i, int j){
   while (i < j) {
      if (str[i] != str[j])
         return false;
      i++;
      j--;
   }
   return true;
}
//counting palindrome with prime length
int count_prime(string str, int len){
   bool prime[len + 1];
   memset(prime, true, sizeof(prime));
   prime[0] = prime[1] = false;
   for (int p = 2; p * p <= len; p++) {
      if (prime[p]) {
         for (int i = p * p; i <= len; i += p)
            prime[i] = false;
      }
   }
   int count = 0;
   for (int j = 2; j <= len; j++) {
      if (prime[j]) {
         for (int i = 0; i + j - 1 < len; i++) {
            if (if_palin(str, i, i + j - 1))
               count++;
         }
      }
   }
   return count;
}
int main(){
   string s = "abccc";
   int len = s.length();
   cout << count_prime(s, len);
   return 0;
}

출력

3