题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)
思路:
利用hashmap的键值对。如str = "google",则哈希表为
键key为: g ,值value为:1
键key为: o ,值value为:1
键key为: o ,值value为:2
键key为: g ,值value为:2
键key为: l ,值value为:1
键key为: e ,值value为:1
注意键为 g 和 o 的值都被改为 2了,( 当你存放一个hashmap中已存在的键时,会把原来的覆盖掉 )
则第一个只出现一次的字符key值为 l,其value值为1。寻找第一次出现的value值为1的即可。
import java.util.HashMap;
public class Solution {
HashMap<Character,Integer> hash = new HashMap<Character,Integer>();
public int FirstNotRepeatingChar(String str) {
int length = str.length();
if (length == 0)
return -1;
for(int i=0;i<length;i++)
{
if (hash.containsKey(str.charAt(i)))
{
int value = hash.get(str.charAt(i));
hash.put(str.charAt(i),++value);
}
else
{
hash.put(str.charAt(i), 1);
}
}
for(int i=0;i<length;i++)
{
if(hash.get(str.charAt(i))==1)
return i;
}
return 0;
}
}