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

C++ का उपयोग करके दी गई स्ट्रिंग में पहले अद्वितीय वर्ण का इंडेक्स खोजें


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

इनपुट-1 -

s = "tutorialspoint"

आउटपुट -

1

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

इनपुट-2 -

s = "aaasttarrs"

आउटपुट -

-1

व्याख्या - दी गई स्ट्रिंग "aaasttarrs" में, कोई अद्वितीय वर्ण नहीं हैं। इसलिए, हम आउटपुट के रूप में '-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'; i++) {
        mp[str[i]]++;
    }
    for (int i = 0; i < str.size(); i++) {
        if (mp[str[i]] == 1) {
            ans = i;
            break;
        }
    }
    return ans;
}

int main() {
    string s = "tutorialspoint";
    cout << uniqueChar(s) << endl;
    return 0;
}

आउटपुट

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

1

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


  1. C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना

    इस लेख में, आप एक दी गई स्ट्रिंग में बनने वाले सबस्ट्रिंग्स (गैर-खाली) की संख्या निकालने के दृष्टिकोण के बारे में जानेंगे।इनपुट: string = moon आउटपुट: 10 व्याख्या: सबस्ट्रिंग्स हैं m, o, o, n, mo, oo, on, moo, oon और moon। इनपुट: string = yellow आउटपुट: 21समाधान खोजने का दृष्टिकोणमान लें स्ट्रिंग की

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

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

  1. - पायथन में दी गई स्ट्रिंग में पहले पुनरावर्ती वर्ण का इंडेक्स खोजने का प्रोग्राम

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