在一个长为n字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)。(从0开始计数)
数据范围:0≤n≤10000,且字符串只有字母组成。
要求:空间复杂度 O(n),时间复杂度 O(n)
示例1输入: "google" 返回值: 4示例2
输入: "aa" 返回值: -1思路/解法 方式一
哈希思想
class Solution {
public:
int FirstNotRepeatingChar(string str) {
int visited[59]{0};
for(int i = 0;i < str.length();i++)
visited[str[i]-65]++;
for(int i = 0;i < str.length();i++)
if(visited[str[i] - 65] == 1)
return i;
return -1;
}
};
方式二
暴力穷举
class Solution {
public:
int FirstNotRepeatingChar(string str) {
for(int i = 0;i < str.length();i++)
{
bool flag = false;
if(str[i] == '.')
continue;
for(int j = i+1;j < str.length();j++)
{
if(str[i] == str[j])
{
flag = true;
str[j] = '.';
}
}
if(!flag)
return i;
}
return -1;
}
};



