मान लीजिए कि हमारे पास एक स्ट्रिंग s है। हमें यह जांचना है कि दी गई स्ट्रिंग एक पैलिंड्रोम है या नहीं। हमें सी में पॉइंटर्स का उपयोग करके इस समस्या को हल करना है।
इसलिए, यदि इनपुट s ="रेसकार" जैसा है, तो आउटपुट ट्रू होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- लंबाई:=स्ट्रिंग का आकार
- आगे:=स्ट्रिंग के पहले वर्ण की ओर इशारा करते हुए
- उलटा:=स्ट्रिंग के अंतिम वर्ण की ओर इशारा करते हुए
- रिवर्स की स्थिति>=आगे की स्थिति, करते हैं
- यदि विपरीत द्वारा इंगित वर्ण आगे द्वारा इंगित वर्ण के समान है, तो
- आगे बढ़ाएं और 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