Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16443
  • 博文数量: 17
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 22
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-01 17:59
个人简介

天下没有笨人,只有不努力的人!

文章分类

全部博文(17)

文章存档

2013年(17)

我的朋友

分类: C/C++

2013-09-06 10:34:08

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

点击(此处)折叠或打开

  1. #include <iostream>

  2. struct Entry
  3. {
  4.     int pos;
  5.     int cnt;
  6. };

  7. int main()
  8. {
  9.     char buf[1024] = "abaccdeff";
  10.     Entry Record[100] = {0};

  11.     char* str = buf;
  12.     for (int i = 0; *str; str++,i++)
  13.     {
  14.         if (Record[*str-'a'].cnt == 0)
  15.         {
  16.             Record[*str-'a'].pos = i;
  17.         }
  18.         Record[*str-'a'].cnt++;
  19.     }
  20.     int minpos = 10000;
  21.     for (int i = 0; i < 100; ++i)
  22.     {
  23.         if (Record[i].cnt == 1 && Record[i].pos < minpos)
  24.         {
  25.             minpos = Record[i].pos;
  26.         }
  27.     }

  28.     printf("%c",buf[minpos]);
  29. }

阅读(715) | 评论(0) | 转发(0) |
0

上一篇:c语言学习

下一篇:没有了

给主人留下些什么吧!~~