387. First Unique Character in a String
Given a string, find the first non-repeating character in it and return it’s index. If it doesn’t exist, return -1.
给定一个字符串,找到第一个不重复的字符并返回它的索引。 如果不存在,返回-1。
Examples:
s = "leetcode"
return 0.
s = "loveleetcode",
return 2.
Note:
You may assume the string contain only lowercase letters
(假定只有小写字母).
思路:
- 定义一个数组,存储字符串各个字母的数量,初始化为0
- 遍历字符串的各个字符,字符的数量依次增加
遍历字符串,查看该字符数量,若为1,返回下标,若均大于1,返回-1
代码如下:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Solution {
public:
int firstUniqChar(string s) {
//A~Z 65~90 a~z 97~122
vector<int> res(26, 0);//用res存储各个字符的数量,默认为0
for(int i=0; i<s.length(); i++)
res[s[i]-97]++;//将各个字符的数量+1
for(int i=0; i<s.length(); i++)
if(res[s[i]-97] == 1)//若字符只有一个,不重复,返回该字符位置
return i;
return -1;
}
};
int main()
{
Solution a;
cout << "请输入一个只含小写字母的字符串: ";
string s;
cin >> s;
cout << "第一个不重复字符的索引是: " << a.firstUniqChar(s)<< endl;
return 0;
}