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