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

这道题的链接: 剑指 Offer 50. 第一个只出现一次的字符
这道题的意思很好理解,说白了就是找到第一个只出现一次的字符。我的思路的话,可以使用Java中的Map记录所有出现的字符,然后第二遍遍历找到第一个只出现一次的字符

class Solution {
    public char firstUniqChar(String s) {
        Map<Character, Integer> frequency = new HashMap<Character, Integer>();
        for(int i = 0; i < s.length(); ++i){
             char temp = s.charAt(i);
             frequency.push(ch, frequency.getOrDefault(ch,0) + 1;
        }
        for(int i = 0; i < s.length(); ++i){
            if(frequency.get(s.charAt(i) == 1)){
                return s.charAt(i);
            }
        }
        return ' ';
    }
}

如果用C语言的话,代码如下:

struct hashTable {
    int key;
    int val;
    UT_hash_handle hh;
}
char firstUniqChar(char* s) {
    struct hashTable* position = NULL;
    int n= strlen(s);
    for(int i = 0; i < n; i++){
        int ikey = s[i];
        struct hashTable* tmp;
        HASH_FIND_INT(position, &ikey, tmp);
        if ( tmp != null){
            tmp->val = -1;
        } else {
            tmp = malloc (sizeof(struct hashTable));

            tmp->key = ikey;
            tmp->val = i;
            HASH_ADD_INT(positon, key, tmp);
        }
    }
    int first = n;
    struct hashTable *iter, *tmp;
    HAS_ITER(hh, position, i)
    
}