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
好了,就这样吧~~~