字符串-查找第一个只出现一次的字符

 

 

一、算法描述

    给定一个字符串,找出字符串中第一个只在整个字符串中出现一次的字符。

二、算法思路

    此题比较简单,常规方法如直接遍历整个字符串,从第一个字符开始,逐一和后续字符比较,看是否在字符串出现,第二种方法是根据字符ascii特性,借助辅助数组,类似于hash数组,以字符的ascii为下标,以字符出现的次数为hash元素值,先统计出各个字符出现的次数,然后再遍历整个字符串,判断其在hash中出现的次数是否为1,为1则表示第一次出现,直接输出即可

三、算法代码

    此处只给出第二种方法的代码

#include <iostream>
#include <cstring>
using namespace std;
//hash method, two loop, o(n)
void find_char(char *s, int n)
{
    int *pc = new int[256];
    memset(pc,0,sizeof(int)*256);
    int i=0;
    for(i=0;i<n;++i)
        pc[s[i]]++;
    for(i=0;i<n;++i)
    {
        if(pc[s[i]]==1)
        {
            cout<<s[i]<<endl;
            break;
        }    
    }    
}

int main()
{
    char src[256]="abacbcdeff";
    
    find_char(src,strlen(src));
    return 0;
}
posted @ 2015-11-07 22:41  ballwql  阅读(872)  评论(0编辑  收藏  举报