[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 ****************************************************************/

 

 

 

你可能感兴趣的:(job)