ধরুন আমরা একটি স্ট্রিং s আছে. প্রদত্ত স্ট্রিংটি প্যালিনড্রোম কিনা তা আমাদের পরীক্ষা করতে হবে। আমাদের এই সমস্যার সমাধান করতে হবে C.
এ পয়েন্টার ব্যবহার করেসুতরাং, ইনপুট যদি s ="racecar" এর মত হয়, তাহলে আউটপুট হবে True।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- দৈর্ঘ্য :=স্ট্রিং এর আকার
- ফরোয়ার্ড :=স্ট্রিংয়ের প্রথম অক্ষরের দিকে নির্দেশ করে
- বিপরীত :=স্ট্রিং এর শেষ অক্ষর নির্দেশ করে
- যখন বিপরীত অবস্থান>=ফরোয়ার্ডের অবস্থান, কর
- যদি বিপরীত দ্বারা নির্দেশিত অক্ষর ফরোয়ার্ড দ্বারা নির্দেশিত অক্ষরের সমান হয়, তাহলে
- অগ্রগতি বাড়ান এবং বিপরীত 1 দ্বারা হ্রাস করুন
- অন্যথায়
- লুপ থেকে বেরিয়ে আসুন
- যদি বিপরীত দ্বারা নির্দেশিত অক্ষর ফরোয়ার্ড দ্বারা নির্দেশিত অক্ষরের সমান হয়, তাহলে
- যদি ফরোয়ার্ডের অবস্থান>=বিপরীত অবস্থান, তাহলে
- সত্য ফেরান
- মিথ্যে ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#include <stdio.h>
#include <string.h>
int solve(char *string){
int length;
char *forward, *reverse;
length = strlen(string);
forward = string;
reverse = forward + length - 1;
for (forward = string; reverse >= forward;) {
if (*reverse == *forward) {
reverse--;
forward++;
} else
break;
} if (forward > reverse)
return 1;
else
return 0;
}
int main(){
char string[] = "racecar";
printf("%d", solve(string));
} ইনপুট
"racecar"
আউটপুট
1