importjava.util.LinkedHashMap;
publicclass Q35第一个只出现一次的数字 {
/**
* 题目:第一个只出现一次的字符
* 题目说明:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出‘b’。
* 解题思路:定义一个哈希表的键(key)是字符,值(value)是出现的次数。第一次扫描字符串,每扫描到一个字符就在哈希表的对应项中把次数加1。第二次扫描,从哈希表中取出要求的字符。
*/
publicstatic void main(String[] args) {
Q35第一个只出现一次的数字 test = new Q35第一个只出现一次的数字();
System.out.println(test.firstAloneChar("abaccdeff"));
}
public Character firstAloneChar(String str){
if(str ==null){
return'\0';
}
char[] strChar = str.toCharArray();
LinkedHashMap<Character, Integer>hashMap =new LinkedHashMap<Character,Integer>();
for(char i : strChar){//此处i表示字符,
if(hashMap.containsKey(i)){//contains(i)表示:如果此映射包含对于指定键的映射关系(如果hashMap中包含字符i),则返回true。
hashMap.put(i, hashMap.get(i)+1);//hashMap.get(i)是获取指定键所映射的值,表示value+1,本题中指的是字符i出现的次数加1
}else {
hashMap.put(i, 1);//如果hashMap中不包含字符i,则将字符i放入hashMap中,并且其出现的次数value设为1.
}
}
for(char key : hashMap.keySet()){//第二次遍历hashMap表,hashMap.keySet()返回此映射中包含的“键”(字符)的Set视图。
if(hashMap.get(key) == 1){//如果键值(字符)出现的次数为1,则返回第一个出现次数为1的字符
return key;
}
}
returnnull;
}
}
Q35:第一个只出现一次的数字
最新推荐文章于 2020-11-06 10:22:50 发布