>  기사  >  백엔드 개발  >  C++에서 회문 부분 문자열의 수를 최대화하기 위해 문자열을 재정렬합니다.

C++에서 회문 부분 문자열의 수를 최대화하기 위해 문자열을 재정렬합니다.

PHPz
PHPz앞으로
2023-09-13 22:29:02860검색

C++에서 회문 부분 문자열의 수를 최대화하기 위해 문자열을 재정렬합니다.

주어진 길이의 문자열 "str"을 얻습니다. 임무는 주어진 입력 문자열에서 문자를 추가하거나 제거하지 않고 회문 문자열이 되는 가장 큰 부분 문자열이 되도록 문자를 재배열하는 것입니다. 회문 문자열은 처음부터 끝까지 같은 소리가 나도록 배열된 문자열입니다.

이 상황에 대한 다양한 입력 및 출력 시나리오를 살펴보겠습니다. -

input− string str = "itnin"

output− 회문 부분 문자열의 수를 최대화하기 위해 문자열을 재배열하는 것은 iinnt입니다.

Explanation- str이라는 문자열 유형 변수를 얻습니다. 이제 입력 문자열의 문자를 재배열하여 최대 회문 문자열로 만들고 이것이 가능하지 않으면 "NOT POSSIBLE"을 반환합니다. 따라서 입력 문자열에 대한 출력은 "iinnt"입니다.

Input− string str = "abaaaabb"

Output − 회문 부분 문자열 수를 최대화하기 위해 문자열을 재배열하는 방법은 aaaaabbb입니다.

Explanation − str과 같은 문자열 유형 변수를 제공합니다. 이제 입력 문자열의 문자를 재배열하여 최대 회문 문자열로 만들고 이것이 가능하지 않으면 "NOT POSSIBLE"을 반환합니다. 그래서 입력 문자열에 대한 출력은 aaaaabbb'입니다.

아래 프로그램에서 사용한 방법은 다음과 같습니다

  • 문자열 변수 입력 str을 입력하고 문자열의 크기를 계산하여 length라는 변수에 저장한다고 가정해 보겠습니다.

  • 데이터를 Rearr_string(str, length) 함수에 전달합니다.

  • 함수 Rearr_string(str, length)

    • 내부에서 크기 26의 정수형 배열을 선언하고 arr[26]이라고 말하고 0으로 초기화합니다.

    • 문자열 유형의 임시 변수 "temp"를 선언합니다.

    • i가 길이보다 작아질 때까지 i에서 0까지 FOR 반복을 시작합니다. 루프 내에서 arr[str[i] - 'a']++를 설정합니다.

    • i가 26보다 작을 때까지 i에서 0까지 FOR 반복을 시작합니다. 루프 내에서 j가 arr[i]보다 작을 때까지 j에서 0까지 또 다른 FOR 루프를 시작합니다. 루프 내에서 temp를 temp + (char)(97 + i)로 설정합니다.

    • 반품 온도.

  • 결과를 인쇄하세요.

#include <bits/stdc++.h>
using namespace std;
string Rearr_string(string str, int length){
   int arr[26] = { 0 };
   string temp = "";
   for(int i = 0; i < length; i++){
      arr[str[i] - &#39;a&#39;]++;
   }
   for(int i = 0; i < 26; i++){
      for(int j = 0; j < arr[i]; j++){
         temp = temp + (char)(97 + i);
      }
   }
   return temp;
}
int main(){
   string str = "itinn";
   int length = str.length();
   cout<<"Rearrangement of the string to maximize the number of palindromic substrings is: "<<Rearr_string(str, length);
   return 0;
}

Output

위 코드를 실행하면 다음과 같은 출력이 생성됩니다

Rearrangement of the string to maximize the number of palindromic substrings is: iinnt

위 내용은 C++에서 회문 부분 문자열의 수를 최대화하기 위해 문자열을 재정렬합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제