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

दिए गए सरणी से पहली स्ट्रिंग जिसका रिवर्स भी उसी सरणी में C++ . में मौजूद है

इस समस्या में, हमें आकार N के स्ट्रिंग str[] की एक सरणी दी जाती है। हमारा कार्य दिए गए सरणी से पहली स्ट्रिंग को खोजने के लिए एक प्रोग्राम बनाना है जिसका रिवर्स भी उसी सरणी में मौजूद है

समस्या को समझने के लिए एक उदाहरण लेते हैं,

Input: str[] = ["python", "program", "C#", "language", "#C"]
Output: C#

समाधान दृष्टिकोण

समस्या को हल करने का एक तरीका स्ट्रिंग सरणी के प्रत्येक तत्व को सीधे ट्रेस करना और शेष सरणी में स्ट्रिंग के सम्मान की जांच करना है। स्ट्रिंग लौटाएं यदि उल्टा पाया जाता है। यदि पूरे ऐरे को ट्रैवर्स किया जाता है और रिवर्स प्रेजेंट वाली कोई स्ट्रिंग नहीं मिलती है तो रिटर्न -1

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम

#include<iostream>
#include<string.h>
using namespace std;
bool checkStringRev(string s1, string s2)
{
   if (s1.length() != s2.length())
      return false;
   int len = s1.length();
   for (int i = 0; i < len; i++)
      if (s1[i] != s2[len - i - 1])
          return false;
   return true;
}
string checkRevStringArr(string strArr[], int n){
   for (int i = 0; i < n - 1; i++)
      for (int j = i + 1; j < n; j++)
         if (checkStringRev(strArr[i], strArr[j]))
             return strArr[i];
   return "-1";
}
int main(){
   string strArr[] = { "python", "program", "C#", "language", "#C" };
   int n = sizeof(strArr)/sizeof(strArr[0]);
   cout<<"The string from the array whose reverse is present in the array is " <<checkRevStringArr(strArr, n);
}
है

आउटपुट

The string from the array whose reverse is present in the array is C#

एक और तरीका है जो समस्या को रैखिक समय में हल कर सकता है यानी सिंगल ट्रैवर्सल में हैशमैप का उपयोग कर रहा है . हम प्रत्येक शब्द को हैशपैप में संग्रहीत करेंगे। यदि किसी स्ट्रिंग का हैशमैप में उल्टा मौजूद है तो हैशपैप से रिवर्स स्ट्रिंग हमारा परिणाम है। और अगर पूरे सरणी में ऐसी कोई स्ट्रिंग नहीं है, तो -1 लौटाएं।

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम

#include<bits/stdc++.h>
using namespace std;
string checkRevStringArr(string strArr[], int length){
   map<string,bool> stringHashMap;
   for(int i = 0; i < length; i++) {
      string str = strArr[i];
      reverse(str.begin(),str.end());
      if (stringHashMap.find(str) != stringHashMap.end() and stringHashMap[str])
         return str;
      else
         stringHashMap[strArr[i]] = true;
   }
   return "-1";
}
int main(){
   string strArr[] = { "python", "program", "C#", "language", "#C" };
   int n = sizeof(strArr)/sizeof(strArr[0]);
   cout<<"The string from the array whose reverse is present in the array is "<<checkRevStringArr(strArr, n);
}

आउटपुट

The string from the array whose reverse is present in the array is C#

  1. C++ में पॉइंटर का उपयोग करके एक स्ट्रिंग को उल्टा करें

    यह आलेख C++ कोडिंग में पॉइंटर का उपयोग करके एक स्ट्रिंग को उलट देता है, सबसे पहले, यह स्ट्रिंग के लिए एक पॉइंटर की लंबाई की गणना करता है, फिर रिवर्स स्ट्रिंग को निम्नानुसार प्रदर्शित करने के लिए घटते क्रम में लूप के लिए चलाएं; उदाहरण #include <string.h> #include <iostream> using namespa

  1. C++ . में दिए गए स्ट्रिंग में "1(0+)1" के सभी पैटर्न खोजें

    मान लीजिए कि एक स्ट्रिंग में 1(0+)1 जैसे पैटर्न हैं। जहां (0+) 1s की गैर-रिक्त लगातार घटनाओं को इंगित करता है। हमें सभी पैटर्न खोजने होंगे। पैटर्न ओवरलैप कर सकते हैं। स्ट्रिंग जरूरी नहीं कि एक बाइनरी स्ट्रिंग हो। यह केवल अंक और लोअरकेस वर्ण धारण कर सकता है। मान लीजिए कि स्ट्रिंग 1101001 की तरह है, त