दिलचस्प पोस्ट
winapi: CreateProcess लेकिन प्रक्रिया 'विंडो छिपाना? सोप सूद और खतरनाक स्कीमा प्रकार नहीं मिला त्रुटि AVPlayer के साथ एमपी 3 ऑडियो स्ट्रीमिंग आईफोन भाषण मान्यता एपीआई? अगर … और जेएसपी या जेएसटीएल के भीतर किसी विशेष राशि के बाद `std :: cin` टाइमआउट से पढ़ने के लिए कैसे करें टीडीर के साथ कई स्तंभों का प्रसार ओपनसीवी के साथ वीडियो प्रसंस्करण के साथ ऑडियो आउटपुट कक्षा को सशर्त रूप से लागू करने का सबसे अच्छा तरीका क्या है? स्ट्रिप_टैग्स () के साथ एक्सएसएस को रोकें? एक WPF विंडो का आकार बदलें, लेकिन अनुपात बनाए रखें? टाइप-सुरक्षित डाटाबेसिंग में सी # के लिए 'नेमफ' ऑपरेटर की कमी के लिए वैकल्पिक हल? jquery यूआई संवाद: शीर्षक पट्टी के बिना कैसे आरंभ करें? जावास्क्रिप्ट का उपयोग कर एक निर्दिष्ट महीने में नंबर प्राप्त करें? गेटवे.sandbox.push.apple.com से कनेक्ट करते समय "त्रुटि सत्यापित करें: num = 20"

जांचें कि कोई स्ट्रिंग palindrome है

संभव डुप्लिकेट:
यह पता लगाने के लिए कि कोई दिए गए स्ट्रिंग palindrome है या नहीं है palindrome

मुझे एक प्रोग्राम बनाने की आवश्यकता है जो किसी उपयोगकर्ता को एक स्ट्रिंग इनपुट करने की अनुमति देता है और मेरा प्रोग्राम यह देखने के लिए जांच करेगा कि क्या वह स्ट्रिंग जो उन्होंने दर्ज की है वह एक पेलंड्रोम है (शब्द जो पीछे की ओर पढ़ा जा सकता है, जैसा कि वह आगे कर सकता है)।

Solutions Collecting From Web of "जांचें कि कोई स्ट्रिंग palindrome है"

बस स्वयं के साथ स्ट्रिंग की तुलना करें उलट:

string input; cout << "Please enter a string: "; cin >> input; if (input == string(input.rbegin(), input.rend())) { cout << input << " is a palindrome"; } 

string इस कन्स्ट्रक्टर को शुरुआत और अंतराल करने वाला लगता है और उन दो दोहरावों के बीच के अक्षर से स्ट्रिंग बनाता है। चूंकि rbegin() स्ट्रिंग का अंत है और इसे बढ़ाना स्ट्रिंग के माध्यम से पीछे की ओर जाता है, स्ट्रिंग जो हम बनाते हैं, उसमें स्ट्रिंग के पीछे उल्टा input के अक्षरों में जोड़े जाते हैं।

उसके बाद आप इसकी तुलना input लिए करते हैं और यदि वे समान हैं, तो यह एक पलंड्रोम है

यह खाता पूंजीकरण या रिक्त स्थान में नहीं लेता, इसलिए आपको अपने आप में सुधार करना होगा

ध्यान दें कि पूरे स्ट्रिंग (या तो rbegin() / rend() रेंज कंस्ट्रक्टर के साथ या std::reverse ) और इसके साथ इनपुट के साथ अनावश्यक कार्य निष्पादित करेगा।

उत्तरार्द्ध में, रिवर्स में स्ट्रिंग के पहले छमाही की तुलना करने के लिए पर्याप्त है:

 #include <string> #include <algorithm> #include <iostream> int main() { std::string s; std::cin >> s; if( equal(s.begin(), s.begin() + s.size()/2, s.rbegin()) ) std::cout << "is a palindrome.\n"; else std::cout << "is NOT a palindrome.\n"; } 

डेमो: http://ideone.com/mq8qK

 bool IsPalindrome(const char* psz) { int i = 0; int j; if ((psz == NULL) || (psz[0] == '\0')) { return false; } j = strlen(psz) - 1; while (i < j) { if (psz[i] != psz[j]) { return false; } i++; j--; } return true; } 

// STL स्ट्रिंग संस्करण:

 bool IsPalindrome(const string& str) { if (str.empty()) return false; int i = 0; // first characters int j = str.length() - 1; // last character while (i < j) { if (str[i] != str[j]) { return false; } i++; j--; } return true; } 

स्ट्रिंग रिवर्स करें और जांचें कि मूल स्ट्रिंग और रिवर्स समान हैं या नहीं

मैं कोई सी + + लड़का नहीं हूं, लेकिन आप इस से सारांश प्राप्त करने में सक्षम होना चाहिए।

 public static string Reverse(string s) { if (s == null || s.Length < 2) { return s; } int length = s.Length; int loop = (length >> 1) + 1; int j; char[] chars = new char[length]; for (int i = 0; i < loop; i++) { j = length - i - 1; chars[i] = s[j]; chars[j] = s[i]; } return new string(chars); }