使用 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(stringstr)将字符串作为输入并返回第一个出现的唯一字符的索引。
遍历字符串并在遍历字符串的每个字符时创建char及其出现的哈希图。
如果存在频率小于2或等于1的字符,则返回该特定字符的索引。
如果字符串中不存在唯一字符,则返回“-1”作为输出。
示例
#includeusing namespace std; int uniqueChar(string str){ int ans = -1; unordered_map mp; for(int i=0;str[i]!='\0'){ mp[str[i]]++; } for(int i=0;i first==str[i] && it->second==1){ ans= i; } } } return ans; } int main(){ string s= "nhooo"; cout< 输出结果 运行上面的代码会将输出打印为,
1说明-输入字符串“nhooo”包含唯一字符“u”、“r”和“l”,第一个唯一字符“u”的索引为“1”。所以,我们得到'1'作为输出。