Description:
Example:
Note
Solution 1(C++)
Solution 2(C++)
算法分析
解法一: 其实就是用map来储存string中各个字符的出现的次数。然后顺序遍历string,输出第一个只出现1个的字符就可以了。
解法二: 这个解法要考虑的就是一旦string太长了,那么如果还要遍历string,就会造成时间复杂度的增加,所以这个时候直接将元素的位置索引与出现次数放入pair< int,int >容器中,就可以了,然后只用顺序检索map即可。
程序分析
用map来储存一个数组中出现的元素与元素出现的个数方法:
unordered_map<char,int> m;
for(auto c:s){
m[c]++;
}
进一步map储存元素的位置索引,方法如下:
unordered_map<char, pair<int, int>> m;
for (int i = 0; i < s.size(); i++) {
m[s[i]].first++;
m[s[i]].second = i;
}