刷leetcode-day15
一、题目:
387.字符串中的第一个唯一字符:
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = "leetcode" 返回 0. s = "loveleetcode", 返回 2.
二、思路:
新建一个含有26个0的vector a,记录字符串s中每个字母的个数,遍历vector a,找到值为1的元素对应的字母,找出该字母在字符串中对应的下标,并存入一个新的vector b。遍历vector b,返回最小值。
三、代码(C++):
int firstUniqChar(string s) {
vector<int> a(26, 0);
vector<int> b;
for (auto s1 : s)
++a[s1 - 'a'];
for (int i = 0; i != a.size(); i++)
{
if (a[i] == 1)
{
for (int j = 0; j != s.size(); j++)
if (s[j] == (i + 'a'))
b.push_back(j);
}
}
if (b.size() == 0)
return -1;
int t = b[0];
for (auto a : b)
if (a < t)
t = a;
return t;
}