(程序员面试题)字符串处理之找到第一个只出现一次的字符
2013-11-15 22:38
197 查看
#include <stdio.h> #define MAXLINE 4096 int first_no_repeat(const char *from) { char hash_table[256]; int cur = 0; int tmp = 0; for(; tmp < 256; hash_table[tmp++] = 0); for(;*from != '\0'; from++) { hash_table[*from]++; } for(; cur < 256; cur++) { if(hash_table[cur] == 1) { return cur; } } return -1; } int main() { int result; char example = 'i'; const char *str = "abbcdefefadhihcaccd"; result = first_no_repeat(str); printf("example = %d\n", example); printf("result = %d\n", result); return 0; }
测试结果如下:
cheny@cheny-laptop:~/string$ ./first_no_repeat
example = 105
result = 105
在给出的字符串abbcdefefadhihcaccd里面第一个出现一次的字符串是i,他的ASCII码对应的值是105,这个我有用example对应打出作参照,这题的巧妙之处是用一个长度位255的数组来存放所有的char类型的值,下标刚好对应每个char的ASCII码的值,这样子就不必使用二维数组来存储“字符-数目”之类的键值,借鉴来hash table的思想,写的不好请大家指正,谢谢!
相关文章推荐
- 哈希表对字符串的高效处理1:在一个字符串中找到第一个只出现一次字符
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符
- 算法十二:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 在一个字符串中找到第一个只出现一次的字符(JAVA实现)
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b.
- 找到字符串中第一个出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符
- No17、题目:在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。
- <仅是自己做笔记。。。系列-9>在一个字符串中找到第一个只出现一次的字符。
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 在一个字符串中找到第一个只出现一次的字符
- 微软面试100题目之17 :在一个字符串中找到第一个只出现一次的字符。
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符
- 从字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符