使用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'作為輸出。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP