使用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