zoukankan      html  css  js  c++  java
  • [Jobdu] 题目1283:第一个只出现一次的字符

    题目描述:

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

    输入:

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

    输出:

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

    样例输入:
    ABACCDEFF
    AA
    样例输出:
    1
    -1

    用一个HashMap即可,因为输入为ascii码,所以只要用一个大小为256的数组就行。还有一个题是只有一个出现一次,其它都出现两次,找到出现一次的。据说是Google面试题,想法就是把char看作int,然后用xor操作。

     1 #include <iostream>
     2 #include <string>
     3 #include <cstring>
     4 using namespace std;
     5  
     6 int main() {
     7     string s;
     8     int a[256];
     9     while (cin >> s) {
    10         memset(a, 0, sizeof(a));
    11         int t = 0;
    12         for (int i = 0; i < s.length(); ++i) {
    13             ++a[s[i]];
    14         }
    15         bool flag = false;
    16         for (int i = 0; i < s.length(); ++i) {
    17             if (a[s[i]] == 1) {
    18                 flag = true;
    19                 cout << i << endl;
    20                 break;
    21             }
    22         }
    23         if (!flag) cout << "-1" << endl;
    24     }
    25     return 0;
    26 }
    27 /**************************************************************
    28     Problem: 1283
    29     User: hupo250
    30     Language: C++
    31     Result: Accepted
    32     Time:80 ms
    33     Memory:1520 kb
    34 ****************************************************************/
  • 相关阅读:
    【原】基础篇:第九篇,Ext组件系列之field组件的基本用法
    为什么要返回byte[]
    Migrate Mysql to SQL Server 2005
    关于编码规范
    RPM删除包的时候报127错误
    邮政储蓄的线上故障
    string.replaceAll与StringUtils.replace
    EJB工作原理
    OJB Connection
    找工作
  • 原文地址:https://www.cnblogs.com/easonliu/p/3645283.html
Copyright © 2011-2022 走看看