কম্পিউটার

C++ ব্যবহার করে একটি প্রদত্ত স্ট্রিং-এর প্রথম অনন্য অক্ষরের সূচক খুঁজুন


একটি স্ট্রিং 's' দেওয়া হয়েছে, কাজটি হল প্রথম অনন্য অক্ষরটি খুঁজে বের করা যা অক্ষরের প্রদত্ত স্ট্রিংটিতে পুনরাবৃত্তি হচ্ছে না এবং আউটপুট হিসাবে তার সূচকটি ফেরত দেওয়া। প্রদত্ত স্ট্রিং-এ যদি এমন কোন অক্ষর না থাকে, আমরা আউটপুট হিসাবে '-1' ফেরত দেব। উদাহরণস্বরূপ,

ইনপুট-1

s = “tutorialspoint”

আউটপুট

1

ব্যাখ্যা - প্রদত্ত স্ট্রিং "টিউটোরিয়াল পয়েন্ট"-এ, প্রথম অনন্য অক্ষর যা পুনরাবৃত্তি হয় না তা হল 'u' যার সূচী '1' রয়েছে। এইভাবে আমরা আউটপুট হিসাবে '1' ফেরত দেব।

ইনপুট-2

s = “aaasttarrs”

আউটপুট

-1

ব্যাখ্যা - প্রদত্ত স্ট্রিং "aasttarrs"-এ, কোন অনন্য অক্ষর নেই। সুতরাং, আমরা '-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

ব্যাখ্যা − ইনপুট স্ট্রিং 'টিউটোরিয়াল পয়েন্ট'-এ 'u', 'r', এবং 'l' হিসাবে অনন্য অক্ষর রয়েছে এবং প্রথম অনন্য অক্ষর 'u'-এর সূচী '1' রয়েছে। সুতরাং, আমরা আউটপুট হিসাবে '1' পাই।


  1. C++ ব্যবহার করে একটি স্ট্রিং এর সাবস্ট্রিং এর সংখ্যা খুঁজুন

  2. C++ ব্যবহার করে বন্ধনীর একটি স্ট্রিংয়ে একটি সমান পয়েন্ট খুঁজুন।

  3. কিভাবে C# এ একটি স্ট্রিং এর প্রথম অক্ষর খুঁজে বের করবেন?

  4. পাইথনে প্রদত্ত স্ট্রিং-এ প্রথম পুনরাবৃত্ত অক্ষরের সূচক খুঁজে বের করার জন্য প্রোগ্রাম