여기에서 배열 또는 문자열이 제공됩니다. 우리는 배열이나 문자열의 요소를 뒤집는 프로그램을 만들 것입니다.
문제를 이해하기 위해 예를 들어보겠습니다.
입력
array = {2, 5, 7, 1, 9} 출력
{9, 1, 7, 5, 2} 입력
string = “Hello!”
출력
!0lleH
프로그램을 생성하기 위해 우리는 배열/문자열의 요소를 반복할 것입니다(둘 다 같은 방식으로 작동합니다). 시작과 끝을 위해 하나의 변수를 사용합니다. 그리고 두 요소를 모두 바꿉니다. 시작 변수를 증가시키고 끝 변수를 감소시킵니다. 스와핑은 시작 변수의 값이 종료 변수보다 작을 때까지 계속됩니다.
프로그램은 두 가지 방법으로 만들 수 있습니다. 하나는 반복적이고 다른 하나는 재귀적입니다. 우리는 두 가지 방법의 작동을 시연할 프로그램을 만들 것입니다.
예시
방법 1:반복적 접근
Program :
#include <iostream>
using namespace std;
void revereseArrayIt(int arr[], int start, int end){
while (start < end){
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
int main() {
int arr[] = {6, 9, 1, 4, 0, 5};
int n = sizeof(arr) / sizeof(arr[0]);
cout<<"Orignal Array : ";
for (int i = 0; i < n; i++)
cout<<arr[i]<<" ";
cout<<endl;
revereseArrayIt(arr, 0, n-1);
cout << "Reversed array : ";
for (int i = 0; i < n; i++)
cout<<arr[i]<<" ";
cout<<endl;
return 0;
}
출력
Orignal Array : 6 9 1 4 0 5 Reversed array : 5 0 4 1 9 6
예시
방법 2 :재귀적 접근
#include <iostream>
using namespace std;
void revereseArrayRec(int arr[], int start, int end){
if(start >= end)
return;
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
revereseArrayRec(arr,start+1, end-1);
}
int main() {
int arr[] = {6, 9, 1, 4, 0, 5};
int n = sizeof(arr) / sizeof(arr[0]);
cout<<"Orignal Array : ";
for (int i = 0; i < n; i++)
cout<<arr[i]<<" ";
cout<<endl;
revereseArrayRec(arr, 0, n-1);
cout << "Reversed array : ";
for (int i = 0; i < n; i++)
cout<<arr[i]<<" ";
cout<<endl;
return 0;
} 출력
Orignal Array : 6 9 1 4 0 5 Reversed array : 5 0 4 1 9 6