입력으로 문자열 Str이 제공됩니다. 목표는 입력 문자열이 회문 단어인지 재귀 함수를 사용하지 않는지 찾는 것입니다. 회문 문자열은 앞이나 끝에서 읽을 때 같은 단어를 형성하는 문자열입니다. 길이가 0인 문자열은 회문으로 간주됩니다. 회문 문자 현명한 형식을 반전, 원본과 동일한 문자열.
회문의 예는 다음과 같습니다.- madam, abcba, malayalam 등
예시
입력 − Str ="말라얄람어"
출력 − 입력 문자열은 회문입니다.
설명 -
Str[ 0 ~ 8 ] =말라얄람어
역방향 Str [ 8 to 0 ] =말라얄람어
두 문자열이 동일합니다.
입력 − Str ="자습서"
출력 − 입력 문자열은 회문이 아닙니다.
설명 -
Str[ 0 ~ 7 ] =튜토리얼
역방향 Str [ 7 to 0 ] =lairotut
두 문자열이 다릅니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
이 접근 방식에서는 문자열에 단일 문자가 포함되어 있는지 확인하고, true이면 회문입니다. 그렇지 않은 경우 나머지 문자에 대해 전체 문자열을 재귀적으로 순회하고 해당 문자가 다른 경우 재귀를 중단합니다.
-
입력 문자열 Str[]을 가져와 길이를 계산합니다.
-
길이가 0이면 결과=1로 설정합니다.
-
Else set result=checkPalindrome(Str, 0, length - 1) 여기서 0은 첫 번째 인덱스이고 길이 - 1은 마지막 인덱스입니다.
-
함수 checkPalindrome(char str[], int first, int last)는 문자열의 해당 문자와 일치하지 않는 문자가 있으면 0을 반환합니다.
-
첫 번째와 마지막 인덱스가 같으면 문자열에 한 문자가 있으면 1을 반환합니다.
-
그렇지 않은 경우 first++, last- 및 재귀 호출 checkPalindrome(str, first, last)로 끝 문자를 제외한 나머지 문자를 확인합니다.
-
모든 재귀가 끝나면 결과를 얻을 수 있습니다.
-
1이면 입력 문자열이 회문입니다.
-
그렇지 않으면 입력 문자열이 회문이 아닙니다.
-
메인에서 결과를 출력하세요.
예시
#include <bits/stdc++.h> using namespace std; int checkPalindrome(char str[], int first, int last){ if (first < last + 1){ first++; last--; return checkPalindrome(str, first, last); } if (first == last){ return 1; } if (str[first] != str[last]){ return 0; } return 1; } // Driver Code int main(){ char Str[] = "madam"; int result; int length = strlen(Str); if (length == 0){ result=1; } else{ result=checkPalindrome(Str, 0, length - 1); } if (result==1){ cout << "Input string is palindrome."; } else{ cout << "Input string is not a palindrome."; } return 0; }
출력
위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Input string is palindrome.