第一个只出现一次的字符
题目
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
思路
hashmap key存字符,value存出现的次数 顺利性用LinkedHashMap保证
代码
import java.util.LinkedHashMap;
/**
* 使用HashMap存数字,没重现一次就value++;顺序性的话用LinkedHashMap做
*/
public class FirstNotRepeatingChar {
public int FirstNotRepeatingChar(String str) {
LinkedHashMap<Character,Integer> path = new LinkedHashMap<>();
for(int i=0;i<str.length();i++){
if (path.containsKey(str.charAt(i))){
int count = path.get(str.charAt(i));
path.put(str.charAt(i),++count);
}else {
path.put(str.charAt(i),i);
}
}
for (int i=0;i<str.length();i++){
char c = str.charAt(i);
if (path.get(c)==1){
return i;
}
}
return -1;
}
public int FirstNotRepeatingChar_ii(String str){
char[] c = str.toCharArray();
int[] dict = new int['Z'];
for (char d : c){
dict[(int)d]++;
}
for (int i=0;i<c.length;i++){
if (dict[(int)c[i]]==1){
return i;
}
}
return -1;
}
}