首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

从一个字符串中找到第一个不重复字符

2012-10-27 
从一个字符串中找出第一个不重复字符从一个字符串中找出第一个不重复字符:输入,“saskdfw234sad2t356sadfg”

从一个字符串中找出第一个不重复字符
从一个字符串中找出第一个不重复字符:
输入,“saskdfw234sad2t356sadfg”; 输出k;
输入,“sasdf23sad2t3sadf”; 输出t;
输入,“saskdfwfgwk23sad23sadfg”; 输出NULL;

面试的时候碰到的,当时没做做出来,只想到用hashtable,但是实在是能力不够,短时间做不出来,回来后上网查了资料,发现确实有hashtable的解法,也有提出倒序遍历思想的,试了一下,下面是我的程序,如果有错误,还请朋友指出来,谢谢~

#include <stdio.h>#include <string.h>int main(void){int a[1024];  /* 这个地方我取256或512的时候都不能得到正确的答案,why?*/char *s="saskdfwfgwk23sad23sadfg";int i,len;char c=' ',prev;len = strlen(s);for(i=len-1; i>=0; i--){(a[s[i]])++;if(a[s[i]]==1){prev = c;c = s[i];}printf("prev=%c,c=%c, a[s[i]]=%d, s[i]=%c\n",prev,c,a[s[i]],s[i]);}if(a[c]==1){printf("c: %c\n", c);}else if(a[prev]==1){printf("c: %c\n", prev);}else{printf("c: %s\n", "NULL");}return 0;}


在网上搜索到一个hashtable的算法,只能针对不含数字的字符串进行处理,我上面给出的数据测试行不通,谁能帮忙改一下?
#include<stdio.h>#include<string.h>int num[26]={0};int in[26]={0};int main(){    char *s="aaedaa";    int i;    for(i=0;i<strlen(s);i++)    {        num[s[i]-'a']++;        in[s[i]-'a']=i;    }    int min=strlen(s);    for(i=0;i<26;i++)        if(num[i]==1 && in[i]<min)        {            min=i;        }    printf("%c\n",min+'a');    return 0;        }

热点排行