第一个只出现一次的字符
package SwordToOffer;
import java.util.*;
/**
* Create by ~JH~ on 2018/5/8
* 在一个字符串(1<=字符串长度<=10000,全部由字母组成)
* 中找到第一个只出现一次的字符,并返回它的位置
*/
public class FirstNotRepeatingChar {
public int FirstNotRepeatingChar(String str) {
if (str==null||"".equals(str))return -1;
Map<Character,Integer> map=new HashMap<>();
Character c=null;int n;
for(int i=0;i<str.length();i++){
c=str.charAt(i);
if (map.get(c)==null){
map.put(c,1);
}else{
n=map.get(c);
map.put(c,n+1);
}
}
List<Character>list=new ArrayList<>();
Set<Map.Entry<Character,Integer>>set= map.entrySet();
for (Map.Entry<Character,Integer> en:set
) {
if (en.getValue()==1){
list.add(en.getKey());
}
}
for (int i=0;i<str.length();i++
) {
c=str.charAt(i);
if (list.contains(c)){
return i;
}
}
return 0;
}
public static void main(String[] args) {
FirstNotRepeatingChar f=new FirstNotRepeatingChar();
f.FirstNotRepeatingChar("google");
}
}