दिलचस्प पोस्ट
डेल्फी विन्डोज 32 के लिए ओआरएम गूगल मानचित्र एंड्रॉइड में एपीआई कुंजी त्रुटियों पर हस्ताक्षर किए Html.fromHtml एंड्रॉइड एन में पदावनत हुआ जावा पाठ फ़ाइल में पंक्ति बदलें क्या करता है "निम्नलिखित पैकेज 'पैकेज से छिपी हुई है: xxx' मतलब है? SQL सर्वर में डायनामिक SELECT TOP @ वारा क्या किसी थ्रेड (थ्रेड। अपॉर्टेन्ट विधि) को छोड़ने जैसे कार्य को रद्द करना संभव है? WPF में रेडियो बटन की तरह कार्य करने के लिए टॉगल बटन के समूह को कैसे प्राप्त करें? क्या अस्थायी चर मेरे प्रोग्राम को धीमा कर देते हैं? JQuery का उपयोग कर एक div का भीतरी एचटीएमएल कैसे बदल सकता है? स्ट्रिंग पायथन में सूचीबद्ध करने के लिए ऑपरेशन में 1 कॉलम होना चाहिए – MySQL नहीं है php exec कमांड (या समान) परिणाम के लिए इंतजार नहीं करने के लिए कैसे एक अद्वितीय कॉलम पर एक अद्वितीय सूचकांक बनाने के लिए? किसी दिए गए पैकेज में एनोटेट किए गए तरीकों को कैसे खोजें?

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

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

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

वेब के समाधान से एकत्रित समाधान "जांचें कि कोई स्ट्रिंग 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); }