剑指 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)
}