美文网首页
Leetcode:面试题50. 第一个只出现一次的字符

Leetcode:面试题50. 第一个只出现一次的字符

作者: LonnieQ | 来源:发表于2020-03-12 23:55 被阅读0次

    在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。

    示例:

    s = "abaccdeff"
    返回 "b"
    
    s = "" 
    返回 " "
    

    限制:

    0 <= s 的长度 <= 50000

    思路

    用一个长度为256的数组作为计数器,其中第i个元素保存值为i的字符串的出现频率。对字符串进行两次遍历,第一遍统计字符串频率,第二遍判断如果当前字符出现次数为1就返回。如果没有匹配返回' '。

    C++解法

    class Solution {
    public:
        char firstUniqChar(string s) {
            int counter[256] = {0};
            int length = (int)s.length();
            for (int i = 0; i < length; ++i) counter[s[i]]++;
            for (int i = 0; i < length; ++i) if (counter[s[i]] == 1) return s[i];
            return ' ';
        }
    };
    
    
    int main(int argc, const char * argv[]) {
        cout << Solution().firstUniqChar("fabced") << endl;
        return 0;
    }
    

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    相关文章

      网友评论

          本文标题:Leetcode:面试题50. 第一个只出现一次的字符

          本文链接:https://www.haomeiwen.com/subject/jesnjhtx.html