인접한 두 문자가 서로 다르도록 문자열의 문자를 재배열합니다(C++로 구현됨).
문자열이 주어지며 그것이 str이라고 가정하면 길이는 어떤 값이라도 될 수 있습니다. 임무는 동일한 인접 문자가 결과 문자열에서 함께 정렬되지 않도록 주어진 문자열을 재배열하는 것입니다.
다양한 입력 및 출력 시나리오를 살펴보겠습니다.
Input − String str = "itinn"
Output − 인접한 두 문자가 동일하지 않도록 문자열의 문자를 다시 정렬하면 결과는 다음과 같습니다. initn.
설명 − str이라는 가정 하에 문자열 유형의 변수가 제공됩니다. 이제 두 개의 동일한 문자가 동일한 위치에 나타나지 않도록 입력 문자열의 문자를 재배열하겠습니다. 즉, 'nn'을 인접하지 않은 위치로 이동합니다. 그래서 최종 결과는 문자열은 'initn'이 됩니다.
Input − String str = "abbaabbaa"
Output − 문자열의 문자는 인접한 문자가 다르도록 재배열됩니다. ababababa
Explanation − 다음과 같습니다. 문자열 유형의 변수(str로 가정). 이제 입력 문자열의 문자를 재배열하여 두 개의 동일한 문자가 동일한 위치에 나타나지 않도록 합니다. 즉, 'bb', 'aa', 'bb', 'aa'는 동일하고 인접하므로 이동합니다. 따라서 최종 문자열은 'ababababa'가 됩니다.
아래 프로그램에서 사용한 방법은 다음과 같습니다
문자열형 변수를 str이라고 가정하고 입력하고, 문자열의 크기를 계산하여 length라는 변수에 저장합니다.
길이가 0인지 확인한 후 반환합니다.
데이터를 재정렬(str, length) 함수에 전달합니다.
-
함수 안에서 Rearrangement(arr, length)
문자열의 크기를 (length + 1)/2로 설정합니다.
정수형 데이터를 저장할 벡터형 변수 vec(26, 0)과 문자열형 포인터 ptr(length, ' ')를 선언합니다. 또한 정수 유형과 값 0의 임시 변수 temp를 선언합니다.
FOR 반복을 시작하여 str을 반복합니다. 루프 내부에서 vec[it - 'a']++를 설정합니다.
문자형 변수 ch를 생성하고 maximum(vec) 함수 호출 결과로 설정합니다.
정수 유형의 변수 total을 선언하고 vec[ch - 'a']로 설정합니다.
합계가 크기보다 큰지 확인한 후 반환하세요.
WHILE total 반복을 시작한 다음 ptr[temp]를 ch로 설정하고 temp를 temp + 2로 설정한 다음 총계를 1씩 감소시킵니다.
vec[ch - 'a']를 0으로 설정합니다. i가 26보다 작을 때까지 i에서 0까지 FOR 반복을 시작합니다. 루프 내에서 while 루프를 시작하고, vec[i]가 0보다 크면 temp를 (temp >= length) ? 1로 설정하고, ptr[temp]를 'a' + i로 설정하고, temp를 temp로 설정합니다. + 2, vec[i]를 1씩 감소시킵니다.
Return ptr
-
함수 내부 char maximum(const vector
& vec) 정수형 변수를 high로 선언하고 0으로 설정하고, 문자형 변수 c를 지정합니다.
i가 26보다 작을 때까지 i에서 0까지 FOR 반복을 시작합니다. 루프 내에서 vec[i]가 high보다 작은지 확인한 다음 high를 vec[i]로 설정하고 c를 'a' + i로 설정합니다.
c
로 돌아가서 결과를 인쇄하세요.
Example
#include <bits/stdc++.h> using namespace std; char maximum(const vector<int>& vec){ int high = 0; char c; for(int i = 0; i < 26; i++){ if(vec[i] > high){ high = vec[i]; c = 'a' + i; } } return c; } string Rearrangement(string str, int length){ int size = (length + 1) / 2; vector<int> vec(26, 0); string ptr(length, ' '); int temp = 0; for(auto it : str){ vec[it - 'a']++; } char ch = maximum(vec); int total = vec[ch - 'a']; if(total > size){ return ""; } while(total){ ptr[temp] = ch; temp = temp + 2; total--; } vec[ch - 'a'] = 0; for(int i = 0; i < 26; i++){ while (vec[i] > 0){ temp = (temp >= length) ? 1 : temp; ptr[temp] = 'a' + i; temp = temp + 2; vec[i]--; } } return ptr; } int main(){ string str = "itinn"; int length = str.length(); if(length == 0){ cout<<"Please enter a valid string"; } string count = Rearrangement(str, length); if(count == ""){ cout<<"Please enter a valid string"; } else{ cout<<"Rearrangement of characters in a string such that no two adjacent are same is: "<<count; } return 0; }
Output
위 코드를 실행하면 다음과 같은 출력이 생성됩니다
Rearrangement of characters in a string such that no two adjacent are same is: initn
위 내용은 인접한 두 문자가 서로 다르도록 문자열의 문자를 재배열합니다(C++로 구현됨).의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 기사에서는 모음을 해당 색인에서 알파벳순으로 재배열하여 C++에서 주어진 문자열을 수정하는 방법에 대해 설명합니다. 또한 이 문제를 해결하는 데 사용된 방법을 설명하고 테스트 사례와 함께 예제를 제공합니다. 문제 설명 주어진 문자열에서 모음을 해당 색인에서 알파벳 순서로 재배열하세요. 문자열의 자음은 원래 순서를 유지해야 합니다. 예를 들어, 문자열 "tutorialspoint"가 주어지면 출력은 "tatiriolspount"여야 합니다. 방법 이 문제는 간단한 알고리즘을 사용하여 해결할 수 있습니다. 먼저 주어진 문자열의 모든 모음을 각각의 순서대로 포함하는 별도의 문자열을 만들 수 있습니다. 그런 다음 해당 문자열을 알파벳순으로 정렬할 수 있습니다. 마침내,

두 개의 문자열이 주어졌고 i번째 인덱스에서 하나의 순열이 다른 순열보다 더 큰 문자를 가질 수 있도록 주어진 문자열의 순열이 존재하는지 확인해야 합니다. 문자열을 정렬하고 문자열의 각 문자를 하나씩 비교하여 문제를 해결할 수 있습니다. 또는 두 문자열의 문자 빈도를 사용하여 문제를 해결할 수 있습니다. 문제 설명 - 길이 N의 문자열 str1과 str2가 제공됩니다. 하나가 사전순으로 다른 것보다 큰 문자열 순열이 있는지 확인해야 합니다. 이는 모든 순열이 다른 문자열 순열의 i 번째 인덱스에 있는 문자보다 큰 i 번째 인덱스의 문자를 가져야 함을 의미합니다. 입력 예 -str1="

문자열을 조작하는 것은 다양한 문제 해결 시나리오에서 매우 중요합니다. 주어진 문자열의 순열은 인접한 문자 수보다 더 많은 문자 수를 최적화하기 위해 발견되었습니다. 이것은 가능한 한 많은 인접한 문자 쌍을 생성하기 위해 문자열의 문자를 재배열해야 하는 흥미로운 퍼즐입니다. 왼쪽은 오른쪽의 문자보다 작습니다. 방법 최대 문자 수가 바로 인접한 문자 수보다 큰 문자열 순열을 해결하는 방법에는 여러 가지가 있습니다. 방법 1 - 역추적 및 정리 - 방법 2 - 동적 프로그래밍 - 방법 3 - 힙 알고리즘 - 방법 4 - 사전 정리 순서 - 방법 1: 역추적 및 정리 역추적 알고리즘을 사용하여 문자열의 모든 순열을 생성합니다. 각 단계에서 현재 배열에 지금까지 발견된 최대값보다 더 큰 이웃 문자보다 더 많은 문자가 있는지 확인합니다. 그렇지 않다면 일찍 자르세요.

문자열이 주어졌습니다. str이라고 합시다. 길이는 임의의 값이 될 수 있습니다. 임무는 동일한 인접 문자가 결과 문자열에서 함께 정렬되지 않도록 주어진 문자열을 재배열하는 것입니다. 다양한 입력 및 출력 시나리오를 살펴보겠습니다. 입력 - 문자열 str="itinn" 출력 - 인접한 두 문자가 서로 다르도록 문자열의 문자를 다시 정렬하면 결과는 initn입니다. 설명 −str이라는 가정 하에 문자열 유형의 변수가 주어졌습니다. 이제 입력 문자열의 문자를 다음과 같이 재배열하겠습니다.

주어진 길이의 문자열 'str'이 제공됩니다. 임무는 주어진 입력 문자열에서 문자를 추가하거나 제거하지 않고 출력이 회문 문자열이 되도록 문자를 재배열하는 것입니다. 회문 문자열은 문자가 처음부터 끝까지 동일하게 들리도록 배열된 문자열입니다. 이에 대한 다양한 입력 및 출력 시나리오를 살펴보겠습니다. - 입력 - 문자열 str="itnin" 출력 - 가능한 경우 회문 문자열을 형성하기 위해 문자를 재배열하는 것은 다음과 같습니다. nitin 설명 - str로 가정되는 string 유형의 변수가 제공됩니다. 이제 입력 문자열의 문자를 다음과 같이 재배열하겠습니다.

우리는 임의의 크기의 양의 정수형 배열(arr[])을 가지고 있습니다. 작업은 요소를 인접한 요소와 곱한 다음 결과 요소를 모두 더할 때 가장 작은 합계가 반환되도록 배열을 재배열하는 것입니다. 다양한 입력 및 출력 상황을 살펴보겠습니다. 입력 -intarr[]={2,5,1,7,5,0,1,0} 출력 -연속 쌍의 곱인 합계를 최소화하도록 배열을 재정렬합니다. 요소 설명: 70505121 - 크기 8의 정수 배열이 있습니다. 이제 배열(70505121)을 재정렬하겠습니다. 최소 합계인 7*0+5*0+5가 반환되는지 확인합니다.

win10 시스템의 시작 메뉴에서 프로그램을 재정렬하는 방법은 무엇입니까? 많은 친구들이 그것에 대해 잘 알지 못할 수도 있습니다. 관심이 있다면 아래 편집기에서 win10 시스템의 시작 메뉴에 있는 프로그램을 재정렬하는 설정 방법을 정리했습니다. 에디터를 팔로우하고 아래를 살펴보세요! ! win10 시스템의 시작 메뉴에서 프로그램을 재정렬하는 방법 1. 이 기능을 사용하려면 시스템을 win1010156 버전으로 업데이트합니다. 2. 시작 메뉴 아이콘을 클릭한 다음 [모든 앱]을 클릭합니다. 3. 시작 메뉴에 모든 프로그램을 입력합니다. 를 클릭한 후 상단의 [&] 아이콘을 클릭하면 정렬 순서를 설정할 위치를 입력할 수 있습니다. 4. 첫 글자 또는 문자를 선택하세요.

이 질문에서는 배열 요소에 대해 주어진 쿼리를 실행합니다. 쿼리에는 왼쪽 회전, 오른쪽 회전 및 배열 요소 업데이트의 루프가 포함되어 있습니다. 문제 해결의 논리적 부분은 배열 회전입니다. 배열을 왼쪽으로 회전하는 간단한 방법은 각 요소를 다음 요소로 바꾸고 마지막 요소를 첫 번째 요소로 바꾸는 것입니다. deque 데이터 구조를 사용하여 배열을 효율적으로 회전할 수 있습니다. 문제 설명 - 정수 값을 포함하는 arr[] 배열이 제공됩니다. 추가적으로, K개의 쿼리를 포함하는 요청[] 배열이 제공됩니다. 다음 규칙에 따라 arr[] 배열 요소에 대해 요청[]에 제공된 각 쿼리를 실행해야 합니다. {0} - 배열에서 원형 왼쪽 회전을 수행합니다. {1)-배열에 동그라미를 쳐보세요
