题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)。
时间限制:1秒 空间限制:32768K 热度指数:213452
思路
利用哈希表遍历计数,时间复杂度O(n),空间复杂度O(n)。
import java.util.HashMap;
//直接借助哈希来做即可
public class Solution {
public int FirstNotRepeatingChar(String str) {
if(str == null){
return -1;
}
HashMap<Character,Integer> hashMap = new HashMap<>();
int pos = -1;
char [] chArr = str.toCharArray();//转为字符数组里面
for(int i = 0;i < chArr.length;i++){
if(hashMap.containsKey(chArr[i])){//包含直接加1
hashMap.put(chArr[i],hashMap.get(chArr[i])+1);
}else{
hashMap.put(chArr[i],1);
}
}
//遍历,选出第一个的位置
for(int i = 0;i < chArr.length;i++){
if(1 == hashMap.get(chArr[i])){
pos = i;
break;
}
}
return pos;
}
}