【剑指offer】第一个只出现一次的字符

原创博文,转载请注明出处!
本题牛客网地址

博客文章索引地址

博客文章中代码的github地址

1.题目

image

2.思路

      空间换时间。建立一个哈希表,第一次扫描字符串时,统计每个字符的出现次数。第二次扫描字符串时,返回第一个只出现一次字符的位置。

3.代码

  1 class Solution {
  2 public:
  3     int FirstNotRepeatingChar(string str) {
  4 
  5         // 特殊输入
  6         if(str.size() == 0) return -1;
  7 
  8         // 辅助容器
  9         map<char, int> item;
 10 
 11         // 第一次遍历字符串
 12         for(int i = 0; i < length; i++)
 13             item[str[i]]++;
 14 
 15         // 第二次遍历字符串
 16         for(int i = 0; i < length; i++)
 17             if(item[str[i]] == 1)
 18                 return i;
 19 
 20         // 不存在只出现一次的字符
 21         return -1;
 22     }
 23 };
posted @ 2018-04-17 10:41  wanglei5205  阅读(209)  评论(0编辑  收藏  举报
levels of contents