题目描述

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

import java.util.Map;
import java.util.HashMap;
public class Solution {
public int FirstNotRepeatingChar(String str) {
if(str==null ||str.length()<=0)
return -1;
int result=0;
char[] strChar=str.toCharArray();
Map<Character,Integer> map=new HashMap<>();
for(int i=0;i<strChar.length;i++){
if(map.containsKey(strChar[i])){
map.put(strChar[i],map.get(strChar[i])+1);//重复的字符,令其值为2
}else{
map.put(strChar[i],1);//不重复的字符,令其值为1,之后取值为1的字符即为出现一次的字符
}
}
for(int i=0;i<strChar.length;i++){
if(map.get(strChar[i])==1){
return result;//返回1在字符串中的位置
}
result++;//不是1,继续比较下个字符
}


return -1;
}
}