剑指offer35题(第一个只出现一次的字符)

来源:互联网 发布:java可视化开发工具 编辑:程序博客网 时间:2024/06/17 04:03

题目:在一个字符串(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;    }}

原创粉丝点击