Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

रिकर्सिव फ़ंक्शन यह जांचने के लिए कि क्या स्ट्रिंग C++ में पैलिंड्रोम है

हमें इनपुट के रूप में एक स्ट्रिंग Str दिया जाता है। लक्ष्य यह पता लगाना है कि क्या इनपुट स्ट्रिंग एक पैलिंड्रोम शब्द है या एक पुनरावर्ती फ़ंक्शन का उपयोग नहीं कर रहा है। पैलिंड्रोम स्ट्रिंग्स वे स्ट्रिंग्स हैं जिन्हें सामने या अंत से पढ़ने पर एक ही शब्द बनता है। लंबाई 0 के तार को पैलिंड्रोम माना जाता है। पैलिंड्रोम्स के चरित्र के अनुसार रूपों को उलटना, मूल के समान स्ट्रिंग।

पैलिंड्रोम के उदाहरण हैं:- मैडम, एबीसीबीए, मलयालम आदि

उदाहरण

इनपुट - स्ट्र ="मलयालम"

आउटपुट - इनपुट स्ट्रिंग पैलिंड्रोम है।

स्पष्टीकरण -

स्ट्र [ 0 से 8 ] =मलयालम

रिवर्स स्ट्र [ 8 से 0 ] =मलयालम

दोनों तार समान हैं।

इनपुट - स्ट्र ="ट्यूटोरियल"

आउटपुट - इनपुट स्ट्रिंग पैलिंड्रोम नहीं है।

स्पष्टीकरण -

स्ट्र [ 0 से 7 ] =ट्यूटोरियल

रिवर्स स्ट्र [ 7 से 0 ] =लैरोटुट

दोनों तार अलग हैं

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

इस दृष्टिकोण में हम जाँच करेंगे कि क्या स्ट्रिंग में एक ही वर्ण है, यदि सत्य है तो यह पैलिंड्रोम है। यदि नहीं, तो शेष वर्णों के लिए पूरी स्ट्रिंग को पुनरावर्ती रूप से ट्रैवर्स करें और यदि संबंधित वर्ण भिन्न हैं तो रिकर्सन को तोड़ दें।

  • इनपुट स्ट्रिंग Str[] लें और इसकी लंबाई की गणना करें।

  • अगर लंबाई 0 है तो परिणाम =1 सेट करें।

  • अन्य सेट परिणाम =checkPalindrome(Str, 0, लंबाई - 1) जहां 0 पहली अनुक्रमणिका है और लंबाई -1 अंतिम अनुक्रमणिका है

  • फ़ंक्शन checkPalindrome(char str[], int first, int last) यदि कोई वर्ण स्ट्रिंग में उसके संगत वर्ण से मेल नहीं खाता है तो 0 देता है।

  • यदि पहले और अंतिम अनुक्रमित समान हैं तो स्ट्रिंग में एक वर्ण है, फिर 1 लौटाएं।

  • यदि नहीं, तो अंतिम वर्णों को छोड़कर शेष वर्णों को पहले ++, अंतिम-- और पुनरावर्ती कॉल checkPalindrome(str, first, last) द्वारा जांचें।

  • सभी रिकर्सन के अंत में हमें एक परिणाम मिलेगा।

  • अगर यह 1 है तो इनपुट स्ट्रिंग पैलिंड्रोम है।

  • अन्य इनपुट स्ट्रिंग पैलिंड्रोम नहीं है।

  • मुख्य में परिणाम प्रिंट करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int checkPalindrome(char str[], int first, int last){
   if (first < last + 1){
      first++;
      last--;
      return checkPalindrome(str, first, last);
   }

   if (first == last){
      return 1;
   }
   if (str[first] != str[last]){
      return 0;
   }
   return 1;
}
// Driver Code
int main(){
   char Str[] = "madam";
   int result;
   int length = strlen(Str);
   if (length == 0){
      result=1;
   }

   else{
      result=checkPalindrome(Str, 0, length - 1);
   }
   if (result==1){
      cout << "Input string is palindrome.";
   }
   else{
      cout << "Input string is not a palindrome.";
   }
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा

Input string is palindrome.

  1. कैसे जांचें कि कोई सी/सी ++ स्ट्रिंग एक int है या नहीं?

    यह जांचने के कई तरीके हैं कि स्ट्रिंग एक इंट है या नहीं और उन तरीकों में से एक है स्ट्रिंग की जांच के लिए isdigit() का उपयोग करना। यह जांचने के लिए यहां एक उदाहरण दिया गया है कि स्ट्रिंग एक int है या नहीं C++ भाषा में, उदाहरण #include<iostream> #include<string.h> using namespace std; i

  1. सी ++ में शुद्ध कार्य

    शुद्ध फ़ंक्शन हमेशा समान तर्क मानों के लिए समान परिणाम लौटाते हैं। वे केवल परिणाम लौटाते हैं और तर्क संशोधन, I/O स्ट्रीम, आउटपुट पीढ़ी आदि जैसे कोई अतिरिक्त दुष्प्रभाव नहीं होते हैं। कुछ शुद्ध कार्य हैं sin(), strlen(), sqrt(), max(), pow(), floor() आदि। कुछ अशुद्ध कार्य रैंड (), समय() आदि हैं। कु

  1. strchr () C++ में फंक्शन

    सी ++ में, strchr() एक पूर्वनिर्धारित कार्य है। इसका उपयोग स्ट्रिंग हैंडलिंग के लिए किया जाता है और यह दिए गए स्ट्रिंग में दिए गए वर्ण का पहला अवसर देता है। strchr() का सिंटैक्स निम्नानुसार दिया गया है। char *strchr( const char *str, int c) उपरोक्त सिंटैक्स में, str वह स्ट्रिंग है जिसमें वर्ण c हो