例如:google 第一个不重复的字符是l,ababc第一个不重复的字符是c
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/*** @author ll* @date 2018年4月19日 下午2:54:34* 字符串流中不重复的字符。例如字符串ababc,第一个不重复的字符串是c */public class FirstNoRepeatChar { //定义数据结构 //用来存放字符和出现的次数 public static Mapmap = new HashMap (); //存放字符流中的字符 public static List list = new ArrayList (); /** * map中不包含相应的字符,则将字符放到map中,并添加到list中 * 若map中包含相应的字符,则将map中出现的次数加1,移除list中的字符 */ public List checkChar(Character c){ if(!map.containsKey(c)){ map.put(c, 1); list.add(c); }else{ map.put(c, Integer.valueOf(String.valueOf(map.get(c)))+1); if(list.contains(c)){ list.remove(c); } } return list; } public char printResult(){ if(list.isEmpty()){ return '#'; } return list.get(0); } public static void main(String[] args) { FirstNoRepeatChar fnr = new FirstNoRepeatChar(); String str ="google"; char[] cs = str.toCharArray(); for (char c : cs) { fnr.checkChar(c); } System.err.println(fnr.printResult()); } }