第一个只出现一次的字符

问题描述

在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置

思路分析

可以先将字符串转换为字符数组,然后放在一张哈希表中,而其索引就为字符,然后判断该字符是否为第一次,第一次则键值为1,否则累加,最后遍历该数组,取出第一个键值为1的字符就能确定该位置

码上有戏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public int FirstNotRepeatingChar(String str) {
if(str==null||str.equals(" "))return -1;
char[] ch=str.toCharArray();
HashMap<Character, Integer> hash=new HashMap<Character, Integer>();
for(char c:ch){
if(hash.get(c)!=null){
hash.put(c, hash.get(c)+1);
}else{
hash.put(c, 1);
}
}
for(int i=0;i<ch.length;i++){
if(hash.get(ch[i])==1)
return i;
}
return -1;
}
}

热评文章