剑指 Offer 50. 第一个只出现一次的字符

在这里插入图片描述

解法

 直观解法是遍历每个字符,将当前字符和其余字符比较判断有无重复。
这种解法时间复杂度为 O ( n 2 ) O(n^2) O(n2)
 为了更快的解决问题可以使用哈希表,键为字符,值为对应的次数。char为8位所以有256种可能,可以定义一个数组下标为字符对应的ASCII码,元素为出现的次数。遍历两次字符串,第一次遍历记录次数,第二次遍历找到第一次出现次数为1的字符返回。

class Solution {
    public char firstUniqChar(String s) {
        if(s == null || s.length() == 0)
            return ' ';
        int[] myHash = new int[256];
        for(int i = 0; i < s.length(); i++) {
            myHash[s.charAt(i)]++;
        }
        for(int i = 0; i < s.length(); i++) {
            if(myHash[s.charAt(i)] == 1)
                return s.charAt(i);
        }
        return ' ';
    }
}
posted @ 2020-09-13 10:04  消灭猕猴桃  阅读(45)  评论(0编辑  收藏  举报