題目
Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1.
Examples:
s = "leetcode" return 0. s = "loveleetcode", return 2.
Note: You may assume the string contain only lowercase letters.
分析
求給定字符串中第一個只出現一次的字符。
哈希思想。
代碼
/*
387. First Unique Character in a String
*/
#include <iostream>
#include <cstdlib>
#include <string>
#include <vector>
#include <map>
using namespace std;
class Solution {
public:
/*方法一,藉助哈希表*/
int firstUniqChar1(string s) {
if (s.empty())
return -1;
vector<int> v(256, 0);
int len = s.length();
for (int i = 0; i < len; ++i)
++v[s[i]];
for (int i = 0; i < len; ++i)
if (v[s[i]] == 1)
return i;
return -1;
}
/*方法二:*/
int firstUniqChar(string s) {
if (s.empty())
return -1;
int len = s.length();
map<char, int> sm;
for (int i = 0; i < len; ++i)
{
++sm[s[i]];
}//for
for (int i = 0; i < len; ++i)
if (sm[s[i]] == 1)
return i;
return -1;
}
};