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