使用C++查詢給定字串中第一個唯一字元的索引


給定一個字串's',任務是找到在給定字元字串中不重複出現的第一個唯一字元,並將其索引作為輸出返回。如果給定字串中不存在此類字元,我們將返回'-1'作為輸出。例如:

輸入-1 − (此處應補充輸入字串,例如:"tutorialspoint")

s = “tutorialspoint”

輸出 − 1

1

解釋 − 在給定的字串“tutorialspoint”中,第一個不重複的唯一字元是'u',其索引為'1'。因此,我們將返回'1'作為輸出。

輸入-2 − (此處應補充輸入字串,例如:"aaasttarrs")

s = “aaasttarrs”

輸出 − 1

-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'){
      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

解釋 − 輸入字串“tutorialspoint”包含唯一字元'u'、'r'和'l',第一個唯一字元'u'的索引為'1'。因此,我們得到'1'作為輸出。

更新於:2021年2月5日

2K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.