题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)
分析
思路:由以往写的题,第一可以想到用HashMap,key为字符,val为其出现次数,get方法能直接获取到val,最后判断次数是否为1即可,是则返回
分两步:
1、遍历字符串,统计字符出现次数
2、遍历原字符串并get其val值,判断是否等于1
import java.util.Map;
import java.util.HashMap;
public class Solution {
public int FirstNotRepeatingChar(String str) {
if(str == null || str.length() == 0){
return -1;
}
Map<Character, Integer> map = new HashMap<>();
//1、遍历字符串,统计字符出现次数
for(int i = 0 ; i < str.length() ; i++){
Character ch = str.charAt(i);//ch为Character对象
Integer val = map.get(ch);//val为Integer对象
if(val == null){
map.put(ch, 1);
}else{
map.put(ch, val+1);
}
}
//2、遍历原字符串并get其val值,判断是否等于1
for(int j = 0 ; j < str.length() ; j++){
if(map.get(str.charAt(j)) == 1){
return j;
}
}
return -1;
}
}