若存在一个字符串 s,要求找到它的第一个不重复的字符,并返回它的索引;如果不存在,则返回 -1
题目来源 C 语言具体代码实现作者本人想法!!!
#include
#include
int firstUniqChar(char *s){
for(int i = 0; i < strlen(s); i++){
int j = 0;
for(; j < strlen(s); j++){
if(s[i] != s[j] || i == j){
continue;
}else{
break;
}
}
if(j == strlen(s)){
return i;
}
}
return -1;
}
int main(void){
int index = firstUniqChar("leetcode");
printf("%d", index); // 0
return 0;
}
此道题还可以用哈希表来做!!!但是作者能力有限,还未学习哈希表这一块内容,所以先贴部分代码
struct hashTable {
int key;
int val;
UT_hash_handle hh;
};
int firstUniqChar(char* s) {
struct hashTable* frequency = NULL;
int n = strlen(s);
for (int i = 0; i < n; i++) {
int ikey = s[i];
struct hashTable* tmp;
HASH_FIND_INT(frequency, &ikey, tmp);
if (tmp == NULL) {
tmp = malloc(sizeof(struct hashTable));
tmp->key = ikey;
tmp->val = 1;
HASH_ADD_INT(frequency, key, tmp);
} else {
tmp->val++;
}
}
for (int i = 0; i < n; i++) {
int ikey = s[i];
struct hashTable* tmp;
HASH_FIND_INT(frequency, &ikey, tmp);
if (tmp != NULL && tmp->val == 1) {
return i;
}
}
return -1;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)