您的位置:首页 > 其它

如何找出一个字符串中第一个只出现一次的字符

2014-03-24 22:30 197 查看
思路分析:采用hash法来实现,首先申请一个长度为256的表,对每个字符hash计数即可。因为C/C++中的字符有3种类型:char、signed char和unsigned char。char类型的符号是由编译器指定的,一般是有符号的。在对字符进行hash时,应该先将字符转为无符号类型;否则当下标为负值时,就会出现越界访问。此外,还需要一个数组记录当前找到的只出现一次的字符,避免对原字符串进行第二次遍历。

代码如下:

#include "stdafx.h"
#include <stdio.h>
char GetChar(char str[])
{
if (str == NULL)
return 0;
const int size = 256;
unsigned count[size] = { 0 };
char buffer[size];
char *q = buffer;
const char* p;
for (p = str; *p != 0; p++)
{
count[(unsigned char)*p]++;
if (count[(unsigned char)*p] == 1)
{
*q = *p;
q++;
}
}
for (p= buffer; p < q;p++)
if (count[(unsigned char)*p] == 1)
return *p;
return 0;
}
int main()
{
printf("%c\n", GetChar("abac"));
getchar();
return 0;
}


效果如图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐