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

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

PHPz
풀어 주다: 2023-09-13 22:29:02
앞으로
894명이 탐색했습니다.

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으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿