在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置。
思路:先统计出每个字符出现的次数,然后找出所有出现次数为1的字符的位置,位置最小的为所求的字符。
import java.util.*;
public class Solution {
public int FirstNotRepeatingChar(String str) {
if(str.length()==0){
return -1;
}
int[] counta=new int[26];
int[] countA=new int[26];
for(int i=0; i<str.length(); i++){
if(str.charAt(i)>='a' && str.charAt(i)<='z'){
counta[str.charAt(i)-'a']++;
}
else{
countA[str.charAt(i)-'A']++;
}
}
ArrayList<Character> list1=new ArrayList<>();
for(int i=0; i<26; i++){
if(counta[i]==1){
list1.add((char) (i+'a'));
}
if(countA[i]==1){
list1.add((char) (i+'A'));
}
}
int index=str.indexOf(list1.get(0));
for(Character c: list1){
if(str.indexOf(c)<index){
index=str.indexOf(c);
}
}
return index;
}
}