使用 C++ 查找给定字符串中第一个唯一字符的索引
给定一个字符串“s”,任务是找到给定字符串中不重复的第一个唯一字符,并返回其索引作为输出。如果给定的字符串中不存在这样的字符,我们将返回“-1”作为输出。例如,
输入 1 -
s = “nhooo”
输出-
1
说明- 在给定的字符串“nhooo”中,第一个不重复的唯一字符是索引为“1”的“u”。因此,我们将返回 '1' 作为输出。
输入 2 -
s = “aaasttarrs”
输出-
-1
说明- 在给定的字符串“aaasttarrs”中,没有唯一字符。因此,我们将输出返回为“-1”。
用来解决这个问题的方法
要查找给定字符串中存在的第一个唯一字符的索引,我们可以使用hashmap。这个想法是遍历字符串的所有字符并创建一个以 Key 作为字符和 Value 作为其出现的哈希图。
在遍历字符串的每个字符时,如果每个字符出现,我们将存储每个字符的出现次数。O(n)存储每个字符的出现需要线性时间。然后我们将遍历哈希图并检查是否存在频率小于 2 或等于 '1' 的字符。我们将返回该特定字符的索引。
将字符串 's' 作为输入。
Integer 函数uniqueChar(string str)将字符串作为输入并返回第一个出现的唯一字符的索引。
遍历字符串并在遍历字符串的每个字符时创建 char 及其出现的哈希图。
如果存在频率小于 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= "nhooo";
cout<<uniqueChar(s)<<endl;
return 0;
}
运行上面的代码会将输出打印为,
1
说明- 输入字符串“nhooo”包含唯一字符“u”、“r”和“l”,第一个唯一字符“u”的索引为“1”。所以,我们得到'1'作为输出。
以上是 使用 C++ 查找给定字符串中第一个唯一字符的索引 的全部内容, 来源链接: utcz.com/z/317482.html