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

C++ . का उपयोग करके किसी दिए गए स्ट्रिंग में पहले अद्वितीय वर्ण की अनुक्रमणिका खोजें

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

इनपुट-1 -

s = “tutorialspoint”

आउटपुट -

1

स्पष्टीकरण - दिए गए स्ट्रिंग "ट्यूटोरियल पॉइंट" में, पहला अनूठा चरित्र जो दोहरा नहीं रहा है वह 'यू' है जिसका सूचकांक '1' है। इस प्रकार हम '1' को आउटपुट के रूप में वापस कर देंगे।

इनपुट-2 -

s = “aaasttarrs”

आउटपुट -

-1

स्पष्टीकरण - दिए गए स्ट्रिंग "आस्तर" में, कोई अद्वितीय वर्ण नहीं हैं। इसलिए, हम आउटपुट को '-1' के रूप में वापस कर देंगे।

इस समस्या को हल करने के लिए इस्तेमाल किया जाने वाला तरीका

दिए गए स्ट्रिंग में मौजूद पहले अद्वितीय वर्ण की अनुक्रमणिका खोजने के लिए, हम हैशमैप का उपयोग कर सकते हैं . विचार स्ट्रिंग के सभी पात्रों के माध्यम से जाना है और कुंजी के साथ एक हैशमैप बनाना है और इसकी घटनाओं के रूप में मूल्य है।

स्ट्रिंग के प्रत्येक वर्ण के माध्यम से ट्रैवर्स करते समय, यदि यह प्रकट होता है तो हम प्रत्येक वर्ण की घटनाओं को संग्रहीत करेंगे। प्रत्येक वर्ण की घटनाओं को संग्रहीत करने में O(n) रैखिक समय लगेगा। फिर हम हैशमैप से गुजरेंगे और जांच करेंगे कि क्या कोई ऐसा वर्ण है जिसकी आवृत्ति 2 से कम या '1' के बराबर है। और हम उस विशेष वर्ण की अनुक्रमणिका वापस कर देंगे।

  • एक स्ट्रिंग 's' को इनपुट के रूप में लें।

  • एक पूर्णांक फ़ंक्शन UniqueChar(string str) एक इनपुट के रूप में एक स्ट्रिंग लेता है और पहले दिखने वाले अद्वितीय वर्ण की अनुक्रमणिका देता है।

  • स्ट्रिंग पर पुनरावृति करें और स्ट्रिंग के प्रत्येक वर्ण के माध्यम से जाते समय चार और इसकी घटनाओं का हैशमैप बनाएं।

  • यदि कोई वर्ण है जिसकी आवृत्ति 2 से कम या 1 के बराबर है, तो उस विशेष वर्ण की अनुक्रमणिका लौटाएं।

  • यदि स्ट्रिंग में कोई अद्वितीय वर्ण मौजूद नहीं हैं, तो आउटपुट के रूप में '-1' लौटाएं।

उदाहरण

#include<bits/stdc++.h>
using namespace std;
int uniqueChar(string str){
   int ans = -1;
   unordered_map<char,int>mp;
   for(int i=0;str[i]!='\0'){
      mp[str[i]]++;
   }
   for(int i=0;i<s.size();i++){
      for(auto it= mp.begin();it!=mp.end();it++){
         if(it->first==str[i] && it->second==1){
            ans= i;
         }
      }
   }
   return ans;
}
int main(){
   string s= "tutorialspoint";
   cout<<uniqueChar(s)<<endl;
   return 0;
}

आउटपुट

उपरोक्त कोड को चलाने से आउटपुट इस प्रकार प्रिंट होगा,

1

स्पष्टीकरण - इनपुट स्ट्रिंग 'ट्यूटोरियल पॉइंट' में 'यू', 'आर', और 'एल' के रूप में अद्वितीय वर्ण होते हैं, और पहले अद्वितीय वर्ण 'यू' में इंडेक्स '1' होता है। तो, हमें आउटपुट के रूप में '1' मिलता है।


  1. C++ का उपयोग करके एक स्ट्रिंग के सबस्ट्रिंग की संख्या ज्ञात करें

    इस लेख में, आप किसी दिए गए स्ट्रिंग में बनाए जा सकने वाले सबस्ट्रिंग (गैर-रिक्त) की संख्या को खोजने के तरीकों के बारे में जानेंगे। Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, &lsqu

  1. C++ का उपयोग करके कोष्ठकों की एक स्ट्रिंग में एक समान बिंदु खोजें।

    यहां हम देखेंगे कि कोष्ठक की एक स्ट्रिंग में समान अंक कैसे प्राप्त करें। समान बिंदु सूचकांक I है, जैसे कि इसके पहले खुलने वाले कोष्ठकों की संख्या इसके बाद के समापन कोष्ठक की संख्या के बराबर है। मान लीजिए कि एक ब्रैकेट स्ट्रिंग (())) (() () ())) की तरह है, अगर हम करीब से देखते हैं, तो हम प्राप्त कर स

  1. पायथन में दिए गए स्ट्रिंग में पहले आवर्ती चरित्र की अनुक्रमणिका खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक स्ट्रिंग है, हमें इसमें पहले आवर्ती चरित्र का सूचकांक खोजना होगा। अगर हमें कोई आवर्ती वर्ण नहीं मिल रहा है, तो -1 लौटाएं। इसलिए, यदि इनपुट एबकेड जैसा है, तो आउटपुट 3 होगा, क्योंकि ए फिर से इंडेक्स 3 पर मौजूद है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - नक्शा वर्ण