今日份题目:
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例1
输入:s = "abaccdeff"
输出:'b'
示例2
输入:s = ""
输出:' '
提示
0 <= s 的长度 <= 50000
题目思路
暴力算法即可,我查看了官方提供的方法,时间复杂度与暴力算法是一样的,都是O(n),暴力算法又特别好想好记,所以我就在这里只提供暴力算法了。遍历两次字符串,第一次用来记录每个字母出现的次数,第二次用来查找出现次数以便返回结果。
代码
class Solution
{
public:
char firstUniqChar(string s)
{
int n=s.length();
if(n==0) return ' ';
int a[50]={0};
for(int i=0;i<n;i++)
{
a[s[i]-'a']++;
}
for(int i=0;i<n;i++)
{
if(a[s[i]-'a']==1) return s[i];
}
return ' ';
}
};
提交结果
欢迎大家在评论区讨论,如有不懂的代码部分,欢迎在评论区留言!