【剑指Offer面试编程题】题目1283:第一个只出现一次的字符--九度OJ

题目描述:

在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符。

输入:

输入有多组数据
每一组输入一个字符串。

输出:

输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1。

样例输入:

ABACCDEFF
AA
样例输出:

1
-1
【解题思路】本题有很多思路可以做,包括map set 排序等应用,但,时间却是个问题。既然提到了字母,我们不妨用最原始的方法,统计每个字母出现的次数,然后按照字母的输入次序遍历26个字母,当某一个字母的次数为1则该字母为所求,否则不存在这样的字母。

AC code:

#include <cstdio>
#include <vector>
#include <cstring>
using namespace std;
 
int main()
{
  char cc[10002];
  while(scanf("%s",cc)!=EOF)
  {
    vector<int> alpnum(26,0);
    vector<int> vecin;
    int ll=strlen(cc);
    for(int i=0;i<ll;++i){
      ++alpnum[cc[i]-'A'];
      vecin.push_back(cc[i]-'A');
    }
    int i;
    for(i=0;i<vecin.size();++i)
      if(alpnum[vecin[i]]==1)
      {
        printf("%d\n",vecin[i]);
        break;
      }
      if(i==vecin.size())
        printf("-1\n");
  }
  return 0;
}
/**************************************************************
    Problem: 1283
    User: huo_yao
    Language: C++
    Result: Accepted
    Time:20 ms
    Memory:1024 kb
****************************************************************/

题目链接:http://ac.jobdu.com/problem.php?pid=1283

九度-剑指Offer习题全套答案下载:http://download.csdn.net/detail/huoyaotl123/8276299



posted @ 2014-12-23 23:00  huoyao  阅读(154)  评论(0编辑  收藏  举报