首页 > 试题广场 >

第一个只出现一次的字符

[编程题]第一个只出现一次的字符
  • 热度指数:565015 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)


数据范围:,且字符串只有字母组成。
要求:空间复杂度 ,时间复杂度
示例1

输入

"google"

输出

4
示例2

输入

"aa"

输出

-1
int FirstNotRepeatingChar(charstr ) {
    // write code here
    int a[128]={0};
    int i=0,t;
    for(i=0;*(str+i)!='\0';i++)
    {
        t=*(str+i);
        a[t]++;
    }
    for(i=0;*(str+i)!='\0';i++)
    {
        t=*(str+i);
        if(a[t]==1)
        {
            return i;
        }
    }
    return -1;
}
发表于 2022-11-25 17:45:55 回复(0)
采用hash表存储字符出现频率
int FirstNotRepeatingChar(char* str ) 
{
    int arr[123]={0};//这里无法malloc代码,只能直接创建数组初始化
    for(int i=0;i<strlen(str);i++)
    {
        arr[str[i]]++;
    }
    for(int i=0;i<strlen(str);i++)
    {
        if(arr[str[i]]==1)
            return i;
    }
    return -1;
}



发表于 2022-07-15 14:28:27 回复(0)
C语言
int FirstNotRepeatingChar(char* str ) 
{
   int arr[256]={0};
    for(int i=0;str[i];i++)
    {
        arr[str[i]-'0']+=1;
    }
      for(int j=0;str[j];j++)
    {
        if(arr[str[j]-'0']==1)
            return j;
     }
    return -1;
    
}
发表于 2022-07-14 11:21:11 回复(0)
int FirstNotRepeatingChar(char* str ) {
    int i, j, count = 0;
    char c;
    for(i = 0; str[i]; i++) {
        c = str[i];
        for(j = 0; str[j]; j++)
            if(str[j] == c)
                count++;
        if(count == 1)
            return i;
        count = 0;
    }
    return -1;
}

发表于 2022-02-25 23:31:53 回复(0)
没学过哈希表,胡乱暴力没想到一遍就通过了
int FirstNotRepeatingChar(char* str ) {
    // write code here
    int num[123]={0};
    if(str==NULL||str==0)
        return -1;
    int n=strlen(str);
    int min=-1;
    int count=0;
    for(int i=0;i<n;i++)
    {
        num[str[i]]++;
    }
    for(int j=65;j<123;j++)
    {
        if(num[j]==1)
        {
            for(int i=0;i<n;i++)
            {
                if(str[i]==(char)j)
                {
                    count++;
                    if(count==1)
                    {
                        min=i;
                    }
                    else
                    {
                        if(i<min)
                            min=i;
                    }
                } 
            }
        }
    }
    if(min==-1)
        return -1;
    else
        return min;
}


发表于 2022-01-15 13:07:57 回复(3)