题目:在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
思路:在本题中利用哈希表,字符为key,次数为value。
两次扫描,第一次存key和value。第二次扫描字符与哈希表对应,若有一次的就直接返回。
代码:
import java.util.HashMap; public class Solution { public int FirstNotRepeatingChar(String str) { int len = str.length(); if(len==0){ return -1; } HashMap<Character,Integer> hp = new HashMap<Character, Integer>(); for(int i=0;i<len;i++){ char c = str.charAt(i); if(hp.containsKey(c)){ int time = hp.get(c); time++; hp.put(c,time); } else{ hp.put(c,1); } } for(int i=0;i<len;i++){ char c = str.charAt(i); if(hp.get(c)==1){ return i; } } return -1; } }