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

89 阅读1分钟

题目描述:

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

思路:

你可以记录小写26个字母的字典,统计每一个字母出现的次数。如果说发现了就出现了一次的字符,则返回该字符即可

public static char firstUniqChar(String s) {
    if (s.equals("")) return ' ';
    //创建一个a - z的字典
    int[] target = new int[26];
    for (int i=0;i<s.length();i++){
        target[s.charAt(i) - 'a']++;
    }
    //第二次遍历,从字典数组获取次数
    for (int i = 0; i < s.length(); i++) {
        if (target[s.charAt(i) - 'a'] == 1) return s.charAt(i);
    }
    return ' ';
}