zoukankan      html  css  js  c++  java
  • 笔试题小计

    给定一个字符串,请设计一个高效算法,统计其中出现次数大于1的字符,并按其第一次出现的次序返回最后一个出现多次的字符。比如输入字符串为abcadefeca

    输出为

    因为出现次数大于1的字符按第一次出现的顺序排列,为ace,所以结果输出e

     

    Java实现:

     

     1 public static void getChar(String str) {
     2         StringBuffer strB = new StringBuffer(str);
     3         str = strB.reverse().toString();
     4         char[] ch = str.toCharArray();
     5         LinkedHashMap<Character, Integer> map = new LinkedHashMap<>();
     6         for (char c : ch) {
     7             if (!map.containsKey(c)) {
     8                 map.put(c, 1);
     9             } else {
    10                 Integer n = map.get(c);
    11                 map.remove(c);
    12                 map.put(c, n + 1);
    13             }
    14         }
    15 
    16         Iterator<Character> ite = map.keySet().iterator();
    17         while (ite.hasNext()) {
    18             Character key = ite.next();
    19             Integer n = map.get(key);
    20             if (n > 1) {
    21                 System.out.println(key);
    22                 break;
    23             }
    24         }
    25 
    26     }
    View Code

     

     实现思路,先把字符串进行反转,然后放入有序的map中,然后依次往map中添加值,最后遍历map(取value大于一的第一个key)

     

  • 相关阅读:
    Java IO流-NIO简介
    Java IO流-Properties
    Java IO流-序列化流和反序列化流
    Codeforces Round #371 (Div. 1) C
    bzoj 2326 矩阵快速幂
    IndiaHacks 2016
    HDU
    Educational Codeforces Round 51 (Rated for Div. 2) F
    Codeforces Round #345 (Div. 1) D
    Codeforces Round #300 E
  • 原文地址:https://www.cnblogs.com/blog411032/p/8650891.html
Copyright © 2011-2022 走看看