Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ฟังก์ชันเรียกซ้ำเพื่อตรวจสอบว่าสตริงเป็น palindrome ใน C++ . หรือไม่


เราได้รับสตริง Str เป็นอินพุต เป้าหมายคือการค้นหาว่าสตริงอินพุตเป็นคำ palindrome หรือไม่ใช้ฟังก์ชันแบบเรียกซ้ำ สตริง Palindrome คือสตริงที่เมื่ออ่านจากด้านหน้าหรือสิ้นสุดจะสร้างคำเดียวกัน สตริงที่มีความยาว 0 ถือเป็นพาลินโดรม ย้อนกลับรูปแบบอักขระ palindromes ฉลาด สตริงเดียวกันกับต้นฉบับ

ตัวอย่างของ palindromes ได้แก่:- madam, abcba, malayalam เป็นต้น

ตัวอย่าง

ป้อนข้อมูล − Str =“มาลายาลัม”

ผลผลิต − สตริงอินพุตคือพาลินโดรม

คำอธิบาย

Str[ 0 ถึง 8] =มาลายาลัม

ย้อนกลับ Str [ 8 ถึง 0] =มาลายาลัม

ทั้งสองสายเหมือนกัน

ป้อนข้อมูล − Str =“บทช่วยสอน”

ผลผลิต − สตริงอินพุตไม่ใช่พาลินโดรม

คำอธิบาย

Str[ 0 ถึง 7] =บทช่วยสอน

ย้อนกลับ Str [ 7 ถึง 0] =larotut

สตริงทั้งสองต่างกัน

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

ในแนวทางนี้ เราจะตรวจสอบว่าสตริงมีอักขระตัวเดียวหรือไม่ ถ้าจริง แสดงว่าเป็นพาลินโดรม หากไม่เป็นเช่นนั้น ให้สำรวจซ้ำทั้งสตริงเพื่อหาอักขระที่เหลือ และทำลายการเรียกซ้ำหากอักขระที่เกี่ยวข้องต่างกัน

  • นำสตริงอินพุต Str[] และคำนวณความยาว

  • หากความยาวเป็น 0 ให้ตั้งค่าผลลัพธ์=1

  • Else set result=checkPalindrome(Str, 0, length - 1) โดยที่ 0 คือดัชนีแรกและความยาว - 1 คือดัชนีสุดท้าย

  • ฟังก์ชัน checkPalindrome(char str[], int first, int last) คืนค่า 0 หากอักขระใดไม่ตรงกับอักขระที่เกี่ยวข้องในสตริง

  • หากดัชนีแรกและตัวสุดท้ายเหมือนกัน สตริงจะมีอักขระหนึ่งตัว ให้คืนค่า 1

  • ถ้าไม่เช่นนั้นให้ตรวจสอบอักขระที่เหลือยกเว้นอักขระสิ้นสุดโดย first++, last-- และ recursive call 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.