주어진 길이의 문자열 'str'이 제공됩니다. 임무는 주어진 입력 문자열에서 문자를 추가하거나 제거하지 않고 출력이 회문 문자열이 되도록 문자를 재배열하는 것입니다. 회문 문자열은 문자가 처음부터 끝까지 동일하게 들리도록 배열된 문자열입니다.
Input - String str = "itnin"
Output - 가능하다면 회문 문자열을 형성하기 위해 문자를 재배열하는 방법은 다음과 같습니다: nitin
설명 - 문자열 유형의 변수가 주어졌습니다. str이라고 가정해 보겠습니다. 이제 입력 문자열의 문자를 재정렬하여 회문 문자열이 아닌 경우 이를 회문 문자열로 만듭니다
가능한 경우 'NOT POSSIBLE'을 반환합니다. 따라서 입력 문자열에 대한 출력은 'nitin'입니다.Input - String str = "baaaba"
Output - 회문을 형성하기 위해 가능한 문자 재배열의 결과는 다음과 같습니다. aabbaa
Explanation - 문자열 유형의 변수가 주어집니다. str이라고 가정해 보겠습니다. 이제 입력 문자열의 문자를 다시 배열하여 회문 문자열로 만들고 이것이 가능하지 않으면 'NOT POSSIBLE'을 반환합니다. 따라서 입력 문자열에 대한 출력은 'aabbaa'입니다.
문자열형 변수를 str이라고 가정하고 입력하고, 문자열의 크기를 계산하여 length라는 변수에 저장합니다.
데이터를 재정렬(str, length) 함수에 전달합니다.
Rearrangement(arr, length)
함수 내에서 char 및 정수 유형의 키-값 쌍을 저장하는 'um'이라는 unordered_map 유형 변수를 만듭니다.
정수형 변수 total을 선언하고 0으로 설정합니다.
문자형 변수 'ch'와 문자열형 변수 str_1, str_2를 생성합니다.
i가 길이보다 작아질 때까지 i에서 0까지의 루프로 시작합니다. 루프 내에서 값을 1씩 증가시켜 um[str[i]]를 설정합니다.
FOR 반복을 시작하여 맵 'um'을 반복합니다. 루프 내에서 it.second % 2가 0이 아닌지 확인한 다음 합계를 1만큼 늘리고 ch를 it.first로 설정합니다.
IF total이 1보다 크거나 total = 1이고 길이 % 2 = 0인지 확인하면 0이 반환됩니다.
FOR 반복을 시작하여 맵 'um'을 반복합니다. 루프 내에서 str(it.second / 2, it.first)는 str로 설정되고, str_1은 str_1 + str로 설정되며, str_2는 str + str_2로 설정됩니다.
IF total = 1인지 확인한 다음 str_1 + ch + str_2를 반환합니다. 그렇지 않으면 str_1 + str_2가 반환됩니다.
결과를 인쇄하세요.
#include <bits/stdc++.h> using namespace std; string Rearrangement(string str, int length){ unordered_map<char, int> um; int total = 0; char ch; string str_1 = ""; string str_2 = ""; for (int i = 0; i < length; i++){ um[str[i]]++; } for(auto it : um){ if(it.second % 2 != 0){ total++; ch = it.first; } } if(total > 1 || total == 1 && length % 2 == 0){ return 0; } for(auto it : um){ string str(it.second / 2, it.first); str_1 = str_1 + str; str_2 = str + str_2; } if(total == 1){ return str_1 + ch + str_2; } else{ return str_1 + str_2; } } int main(){ string str = "itnin"; int length = str.size(); cout<<"Rearrangement of characters to form palindrome if possible is: "<<Rearrangement(str, length); return 0; }
위 코드를 실행하면 다음과 같은 출력이 생성됩니다
Rearrangement of characters to form palindrome if possible is: nitin
위 내용은 C++에서 문자를 재정렬하여 회문(가능한 경우)을 형성합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!