题目及要求
给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。
示例 1:
输入: s = “leetcode”
输出: 0
示例 2:
输入: s = “loveleetcode”
输出: 2
示例 3:
输入: s = “aabb”
输出: -1
提示:
1 <= s.length <= 105
s 只包含小写字母
哈希算法
思路:进行两次循环,第一次计算字符出现的次数,第二次只需要找只出现一次的字符,然后将他输出
class Solution {
public:
int firstUniqChar(string s) {
unordered_map<int,int>hash;
for(char ch:s){
++hash[ch];
}
for(int i=0;i<s.size();++i ){
if(hash[s[i]]==1){
return i;
}
}
return -1;
}
};
大智慧法
简单无脑又好玩,锻炼打字
class Solution {
public:
int firstUniqChar(string s) {
int a[26]{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
for(int i=0;i<s.size();i++){
if(s[i]=='a'){
a[0]++;
}
if(s[i]=='b'){
a[1]++;
}
if(s[i]=='c'){
a[2]++;
}
if(s[i]=='d'){
a[3]++;
}
if(s[i]=='e'){
a[4]++;
}
if(s[i]=='f'){
a[5]++;
}
if(s[i]=='g'){
a[6]++;
}
if(s[i]=='h'){
a[7]++;
}
if(s[i]=='i'){
a[8]++;
}
if(s[i]=='j'){
a[9]++;
}
if(s[i]=='k'){
a[10]++;
}
if(s[i]=='l'){
a[11]++;
}
if(s[i]=='m'){
a[12]++;
}
if(s[i]=='n'){
a[13]++;
}
if(s[i]=='o'){
a[14]++;
}
if(s[i]=='p'){
a[15]++;
}
if(s[i]=='q'){
a[16]++;
}
if(s[i]=='r'){
a[17]++;
}
if(s[i]=='s'){
a[18]++;
}
if(s[i]=='t'){
a[19]++;
}
if(s[i]=='u'){
a[20]++;
}
if(s[i]=='v'){
a[21]++;
}
if(s[i]=='w'){
a[22]++;
}
if(s[i]=='x'){
a[23]++;
}
if(s[i]=='y'){
a[24]++;
}
if(s[i]=='z'){
a[25]++;
}
}
if(a[0]!=1&&a[1]!=1&&a[2]!=1&&a[3]!=1&&a[4]!=1&&a[5]!=1&&a[6]!=1&&a[7]!=1&&a[8]!=1&&a[9]!=1&&a[10]!=1&&a[11]!=1&&a[12]!=1&&a[13]!=1&&a[14]!=1&&a[15]!=1&&a[16]!=1&&a[17]!=1&&a[18]!=1&&a[19]!=1&&a[20]!=1&&a[21]!=1&&a[22]!=1&&a[23]!=1&&a[24]!=1&&a[25]!=1){
return -1;
}
for(int i=0;i<s.size();i++){
if(s[i]=='a'&&a[0]==1){
return i;
}
if(s[i]=='b'&&a[1]==1){
return i;
}
if(s[i]=='c'&&a[2]==1){
return i;
}
if(s[i]=='d'&&a[3]==1){
return i;
}
if(s[i]=='e'&&a[4]==1){
return i;
}
if(s[i]=='f'&&a[5]==1){
return i;
}
if(s[i]=='g'&&a[6]==1){
return i;
}
if(s[i]=='h'&&a[7]==1){
return i;
}
if(s[i]=='i'&&a[8]==1){
return i;
}
if(s[i]=='j'&&a[9]==1){
return i;
}
if(s[i]=='k'&&a[10]==1){
return i;
}
if(s[i]=='l'&&a[11]==1){
return i;
}
if(s[i]=='m'&&a[12]==1){
return i;
}
if(s[i]=='n'&&a[13]==1){
return i;
}
if(s[i]=='o'&&a[14]==1){
return i;
}
if(s[i]=='p'&&a[15]==1){
return i;
}
if(s[i]=='q'&&a[16]==1){
return i;
}
if(s[i]=='r'&&a[17]==1){
return i;
}
if(s[i]=='s'&&a[18]==1){
return i;
}
if(s[i]=='t'&&a[19]==1){
return i;
}
if(s[i]=='u'&&a[20]==1){
return i;
}
if(s[i]=='v'&&a[21]==1){
return i;
}
if(s[i]=='w'&&a[22]==1){
return i;
}
if(s[i]=='x'&&a[23]==1){
return i;
}
if(s[i]=='y'&&a[24]==1){
return i;
}
if(s[i]=='z'&&a[25]==1){
return i;
}
}
return 0;
}
};