zoukankan      html  css  js  c++  java
  • 【剑指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
    ",vecin[i]);
            break;
          }
          if(i==vecin.size())
            printf("-1
    ");
      }
      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



  • 相关阅读:
    13---Net基础加强
    12---Net基础加强
    11---Net基础加强
    10---Net基础加强
    09---Net基础加强
    08---Net基础加强
    07---Net基础加强
    06---Net基础加强
    05---Net基础加强
    04---Net基础加强
  • 原文地址:https://www.cnblogs.com/huoyao/p/4248886.html
Copyright © 2011-2022 走看看