题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
提交链接:点击
思路:
利用map容器。其中key为字符,value为该字符在字符串中出现的次数。遍历一次字符串可以得到,时间复杂度为O(n)。
再次遍历一个字符串,若找到在字符串中第一个出现次数为1的字符,返回其序号;否则,返回-1。
代码:
class Solution { public: int FirstNotRepeatingChar(string str) { map<char,int> result; int len=str.length(); for(int i=0;i<len;i++){ //遍历整个str,将每个字符对应出现的次数存入map result[str[i]]= ++result[str[i]]; } for(int i=0;i<len;i++){ if(result[str[i]]==1){ //找到第一个出现次数为1的字符 return i; break; } } return -1; } };