Java数据结构面试题,输出 最后一个 出现次数为1的字符

今天去面试,遇到一个数据结构题,给定一个字符串,输出 最后一个 出现次数为1的字符

回来研究了下,代码如下:

 1 package com.pine.interview.test;
 2 
 3 import java.util.ArrayList;
 4 import java.util.LinkedHashMap;
 5 import java.util.List;
 6 import java.util.Map.Entry;
 7 import java.util.Set;
 8 
 9 public class LinkedHashMapTest {
10   public static void main(String[] args) {
11     //1.统计 字符-出现次数  
12     String str = "qweasdqeqwevqeburtuvcivb";
13     LinkedHashMap<Character,Integer> map = new LinkedHashMap<Character,Integer>();   
14     for(int i=0;i<str.length();i++){
15       char ch = str.charAt(i);
16       if(map.containsKey(ch)){
17          map.put(ch,map.get(ch)+1);  
18       }else{
19          map.put(ch,1); 
20       }
21     }  
22     //2.将 出现次数为1 的字符放入List中
23     Set<Entry<Character, Integer>> entrySet =  map.entrySet();        
24 //    for(Entry<Character, Integer> entry : entrySet){//输出 字符-出现次数 映射
25 //        System.out.println(entry.getKey()+"--->"+entry.getValue());
26 //    }
27     
28     List<Character> characters = new ArrayList<Character>(); 
29     for(Entry<Character, Integer> entry : entrySet){
30         if(entry.getValue()==1){
31           characters.add(entry.getKey());    
32         }
33     }      
34 //    for(Character character : characters){//输出 出现次数为1 的字符
35 //        System.out.println(character);
36 //    }
37     //3.输出 最后一个 出现次数为1 的字符
38     System.out.println(characters.get(characters.size()-1));
39       
40   }
41 }

主要是使用LinkedHashMap这个类统计 字符-出现次数,

相比HashMap来说,LinkedHashMap是有序的,它相当于LinkedList+HashMap

好了,就这样吧~~~

posted @ 2018-04-21 20:55  松松敲代码  阅读(359)  评论(0编辑  收藏  举报