ধরুন আমরা একটি স্ট্রিং 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