เราได้รับสตริง 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.