Computer >> Máy Tính >  >> Lập trình >> C ++

Hàm đệ quy để kiểm tra xem một chuỗi có phải là palindrome trong C ++ hay không

Chúng tôi được cung cấp một chuỗi Str làm đầu vào. Mục đích là để tìm xem chuỗi đầu vào có phải là một từ palindrome hay không sử dụng hàm đệ quy. Chuỗialindrome là những chuỗi khi đọc từ đầu hoặc cuối sẽ tạo thành cùng một từ. Các chuỗi có độ dài 0 được coi là palindromes. Đảo ngược các dạng khôn ngoan của ký tự palindromes, cùng một chuỗi với chuỗi gốc.

Ví dụ về palindromes là:- madam, abcba, malayalam, v.v.

Ví dụ

Đầu vào - Str =“malayalam”

Đầu ra - Chuỗi đầu vào là palindrome.

Giải thích -

Str [0 đến 8] =malayalam

Reverse Str [8 đến 0] =malayalam

Cả hai chuỗi đều giống nhau.

Đầu vào - Str =“hướng dẫn”

Đầu ra - Chuỗi đầu vào không phải là palindrome.

Giải thích -

Str [0 đến 7] =hướng dẫn

Reverse Str [7 đến 0] =lairotut

Cả hai chuỗi đều khác nhau

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

Trong cách tiếp cận này, chúng tôi sẽ kiểm tra xem chuỗi có chứa một ký tự duy nhất hay không, nếu đúng thì đó là palindrome. Nếu không, thì duyệt đệ quy toàn bộ chuỗi cho các ký tự còn lại và ngắt đệ quy nếu các ký tự tương ứng khác nhau.

  • Lấy chuỗi đầu vào Str [] và tính độ dài của nó.

  • Nếu độ dài bằng 0 thì đặt kết quả =1.

  • Kết quả đặt khác =checkPalindrome (Str, 0, length - 1) trong đó 0 là chỉ mục đầu tiên và chiều dài - 1 là chỉ mục cuối cùng

  • Hàm checkPalindrome (char str [], int first, int last) trả về 0 nếu bất kỳ ký tự nào không khớp với ký tự tương ứng của nó trong chuỗi.

  • Nếu chỉ mục đầu tiên và chỉ mục cuối cùng giống nhau thì chuỗi có một ký tự, sau đó trả về 1.

  • Nếu không, hãy kiểm tra các ký tự còn lại ngoại trừ các ký tự kết thúc bằng đầu tiên ++, cuối cùng-- và lệnh gọi đệ quy checkPalindrome (str, đầu tiên, cuối cùng).

  • Khi kết thúc tất cả các lần đệ quy, chúng ta sẽ nhận được một kết quả.

  • Nếu nó là 1 thì chuỗi đầu vào là palindrome.

  • Chuỗi đầu vào khác không phải là palindrome.

  • In kết quả trong main.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra Kết quả sau

Input string is palindrome.