一、前言
本系列文章为《剑指Offer》刷题笔记。
刷题平台:牛客网
书籍下载:共享资源
二、题目
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置。
1、思路
建立一个哈希表,第一次扫描的时候,统计每个字符的出现次数。第二次扫描的时候,如果该字符出现的次数为1,则返回这个字符的位置。
2、代码
C++:
class Solution { public: int FirstNotRepeatingChar(string str) { int length = str.size(); if(length == 0){ return -1; } map<char, int> item; for(int i = 0; i < length; i++){ item[str[i]]++; } for(int i = 0; i < length; i++){ if(item[str[i]] == 1){ return i; } } return -1; } };
Python:
# -*- coding:utf-8 -*- class Solution: def FirstNotRepeatingChar(self, s): # write code here length = len(s) if length == 0: return -1 item = {} for i in range(length): if s[i] not in item.keys(): item展开] = 1 else: item展开] += 1 for i in range(length): if item展开] == 1: return i return -1
来源:
https://cuijiahua.com/blog/2018/01/basis_34.html