华为oj_找出字符串中第一个只出现一次的字符

来源:互联网 发布:长春典恒网络百度贴吧 编辑:程序博客网 时间:2024/06/03 09:34
#include <stdio.h>#include <string.h>#include <stdlib.h>int FindChar(char* pInputString, char* pChar);int main(){    char str[1025];    char c;    int r;    while(gets(str))    {        r=FindChar(str,&c);        if(r==-1)        {            printf(".\n");            continue;        }        printf("%c\n",c);    }    return 0;}int FindChar(char* pInputString, char* pChar){    int a[1025]={0};    int flag=-1;    int len=strlen(pInputString);    int i,j;    for(i=0;i<len-1;i++)    {        if(a[i]==1)            continue;        for(j=i+1;j<len;j++)        {            if(pInputString[i]==pInputString[j])                a[i]=a[j]=1;        }        if(a[i]==0)        {            *pChar=pInputString[i];            flag=1;            break;        }    }    if(flag==-1&&a[len-1]==0)    {        *pChar=pInputString[len-1];        flag=1;    }    return flag;}/*不知道错哪里了!!!提交不了int FindChar(char* pInputString, char* pChar){    int a[1025]={0};    int len,l;    int t=-1;    pChar=pInputString;    char *p;    while(*pChar!='\0') //while(pChar)这样写是错误的,,为什么?    {        p=pChar+1;        len=pChar-pInputString;        if(a[len]==1)        {            pChar++;            continue;        }        while(*p!='\0') //while(p)这样写是错误的,,为什么?        {            if(*p==*pChar)            {                l=p-pInputString;                a[l]=1;                a[len]=1;            }            p++;        }        if(a[len]==0)        {            t=len;            break;        }        pChar++;    }    return t;}*//*//算法思想错误,惭愧啊!虽然追求新颖的算法,但是,,实力不行出错是灾难性的!!!int FindChar(char* pInputString, char* pChar){    int i,a[256],flag[256],len;    for(i=0;i<256;++i)        flag[i]=a[i]=0;    len=strlen(pInputString);    for(i=0;i<len;i++)    {        ++a[(int)pInputString[i]];        flag[(int)pInputString[i]]=i;    }    for(i=0;i<256;++i)    {        if(a[i]==1)        {            *pChar=*(pInputString+flag[i]);            return 1;        }    }    return 0;}*/

这道题目花费了好长时间,,真是……

之前用C++,,还是发现自己字符和字符串在C++中还是没有搞清楚,后来换纯C字符串来做,,调式没有问题,但是提交不了。。最后只有用最简单的方法来解决。数组……


0 0
原创粉丝点击