找到第一个只出现一次的字符

简介: 题目: 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。    分析: 这道题是2006年google的一道笔试题。

题目:

在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。   


分析:

这道题是2006年google的一道笔试题。

ASCII码共有128个,所以可以建一个包含128个元素的数组,初始化为0。扫描字符串,出现某字符,就自增该字符

对应的ASCII值为下标的元素值!


代码如下:

[cpp]  view plain copy
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4.   
  5. int count[128];  //count数组存储每个字符出现的次数  
  6.   
  7. void CountTimes(char *str); //计算str数组中每个字符出现的次数  
  8.   
  9. int main()  
  10. {  
  11.     char str[100]; //存储字符串  
  12.     while (printf("Please input a string :  "),fgets(str,sizeof(str),stdin)!=NULL)  
  13.     {  
  14.         CountTimes(str);   
  15.     }  
  16.   
  17.     return 0;  
  18. }  
  19.   
  20. void CountTimes(char *str)  
  21. {  
  22.     int len,i;  
  23.     len=strlen(str)-1;  //fgets读入的字符串末尾会多一个换行符,ASCII值为10,故减一  
  24.     memset(count,0,sizeof(count));  
  25.   
  26.     for (i=0;i<len;i++)  
  27.     {  
  28.         count[str[i]]++;  
  29.     }  
  30.   
  31.     //下面做法是错误的,感谢tongjianfeng  
  32.     //for (i=0;i<128&&count[i]!=1;i++);//寻找第一个出现一次元素的下标  
  33.     //printf("The character which appears only once is  :  %c\n\n",i);  
  34.   
  35.     //修改如下:  
  36.     for (i=0;i<len;i++)  
  37.     {  
  38.         if (count[str[i]]==1)  
  39.         {  
  40.             printf("The character which appears only once is : %c\n\n",str[i]);  
  41.             return ;  
  42.         }  
  43.     }  
  44.       
  45. }  
目录
相关文章
|
5月前
|
Java
【剑指offer】- 第一个只出现一次的字符位置-34/67
【剑指offer】- 第一个只出现一次的字符位置-34/67
|
7月前
题目:下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
题目:下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
|
12月前
|
数据安全/隐私保护 索引
labview字符串数据长度连接子字符串大小写替换删除插入日期匹配
labview字符串数据长度连接子字符串大小写替换删除插入日期匹配
120 0
|
算法
LeetCode:28. 找出字符串中第一个匹配项的下标
题目描述:给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。
|
算法 Java C语言
找出字符串中第一个匹配项的下标 (LeetCode 28)
找出字符串中第一个匹配项的下标 (LeetCode 28)
181 0
实现strrstr,找到子串最后的出现位置
实现strrstr,找到子串最后的出现位置
79 0
|
编译器 C++
第一个C++程序
第一个C++程序
第一个C++程序
|
C语言
查找某字符串出现的位置,并且输出该第一个字母所在的位
查找某字符串出现的位置,并且输出该第一个字母所在的位
103 0
查找某字符串出现的位置,并且输出该第一个字母所在的位
第一个只出现一次的字符
第一个只出现一次的字符
35 0