ldjhust

工欲善其事 必先利其器

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

 

思路:ASCII码表总共只有255个字符,只需建立一个整型数组分别存储每一个字符出现的次数,再顺序遍历字符串,查找其对应的在字符串中出现的次数,首先只出现一次的字符就是我们需要的字符。

基于以上分析,代码如下:

 1 char FirstOnceChar(const char *Str)
 2 {
 3     assert (Str != NULL);
 4 
 5     // ASCII总共只有255个字符
 6     int Count[255];
 7 
 8     memset (Count, 0, 255 * sizeof (int));
 9 
10     const char *pStr = Str;
11 
12     while (*pStr != '\0')
13     {
14         ++Count[*pStr];
15         ++pStr;
16     }
17 
18     pStr = Str;
19     while (*pStr != '\0')
20     {
21         if (1 == Count[*pStr])
22         {
23             return (*pStr);
24         }
25 
26         ++pStr;
27     }
28 
29     // 如果没有一个字符是只出现一次的,那么返回空字符
30     return ('\0');
31 }

  一些测试结果:

posted on 2013-05-01 17:09  ldjhust  阅读(188)  评论(0编辑  收藏  举报