Chinaunix首页 | 论坛 | 博客
  • 博客访问: 407577
  • 博文数量: 101
  • 博客积分: 2207
  • 博客等级: 大尉
  • 技术积分: 2508
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-19 20:45
文章分类

全部博文(101)

文章存档

2013年(15)

2012年(86)

我的朋友

分类: C/C++

2012-09-25 14:14:09

题目:在一个字符串中找到第一个只出现一次的字符。如输入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. }

阅读(2009) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~