题目描述
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
思路:
利用Map,key存放字符,value存放出现次数,最后与字符串比较,第一个出现次数为1的字符输出位置。
import java.util.*;
public class Solution {
public int FirstNotRepeatingChar(String str) {
if(str.length() == 0){
return -1;
}
if(str.length() == 1){
return 0;
}
Map<Character,Integer> map = new LinkedHashMap<>();
int i = 0;
while(i < str.length()){
//第一次出现的字符
if(!map.containsKey(str.charAt(i))){
map.put(str.charAt(i),1);
}
//出现一次以上的字符
else{
map.put(str.charAt(i),map.get(str.charAt(i)) + 1);
}
++i;
}
for(int j = 0;j < str.length();++j){
if(map.get(str.charAt(j)) == 1){
return j;
}
}
return -1;
}
}