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

回到顶部