মনে করুন আমাদের একটি স্ট্রিং s আছে। আমাদের চেক করতে হবে দেওয়া স্ট্রিংটি প্যালিনড্রোম কিনা। আমাদের এই সমস্যাটি সি-তে পয়েন্টার ব্যবহার করে সমাধান করতে হবে।
তাই, যদি ইনপুট হয় s = "racecar", তবে আউটপুট হবে True।
এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব −
- length := স্ট্রিংয়ের সাইজ
- forward := স্ট্রিং-এর প্রথম ক্যারেক্টার নির্দেশ করছে
- reverse := স্ট্রিং-এর শেষ ক্যারেক্টার নির্দেশ করছে
- reverse-এর পজিশন >= forward-এর পজিশন পর্যন্ত, করুন
- যদি reverse নির্দেশিত ক্যারেক্টার forward নির্দেশিত ক্যারেক্টারের সমান হয়, তবে
- forward বাড়ান এবং reverse কমান ১ করে
- অন্যথায়
- লুপ থেকে বের হোন
- যদি reverse নির্দেশিত ক্যারেক্টার forward নির্দেশিত ক্যারেক্টারের সমান হয়, তবে
- যদি forward-এর পজিশন >= reverse-এর পজিশন হয়, তবে
- True রিটার্ন করুন
- False রিটার্ন করুন
বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন −
উদাহরণ
#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