मान लीजिए कि हमारे पास एक स्ट्रिंग 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