這是我曾經的一道面試題:
1.雙向鏈表如何循環,如何插入一條數據?
2.一個字符串如何用最簡單的方法查出重復的字母?
例如:String str = “agdbadbjja”
最優時間復雜度:
private static void test() { String str = "agdbadbjja"; Map<Object,Integer> maps = new HashMap<>(); for (int i = 0; i < str.length(); i++) { char charAt = str.charAt(i); if (maps.get(charAt) != null) { Integer integer = maps.get(charAt); maps.put(charAt, ++integer); }else{ maps.put(charAt, 1); } } Set<Object> keySet = maps.keySet(); for (Object string : keySet) { Integer integer = maps.get(string); System.out.println("key: " + string + " " + "value: " + integer); } }
打印結果:
key: a value: 3 key: b value: 2 key: d value: 2 key: g value: 1 key: j value: 2
去重:
/** * 去重 */ private static void demo(){ String str = "agdbadbjja"; StringBuffer strb = new StringBuffer(); List lists = new ArrayList<>(); for (int i = 0; i < str.length(); i++) { if (!lists.contains(str.charAt(i))) { lists.add(str.charAt(i)); strb.append(str.charAt(i)); } } System.out.println(strb.toString()); }