首页 > 其他 > 详细

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

时间:2014-03-25 09:41:06      阅读:456      评论:0      收藏:0      [点我收藏+]

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

代码如下:

bubuko.com,布布扣
#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;
}
bubuko.com,布布扣

    效果如图:

bubuko.com,布布扣

如何找出一个字符串中第一个只出现一次的字符,布布扣,bubuko.com

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

原文:http://www.cnblogs.com/cysolo/p/3622041.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!