字符串去重


这是我曾经的一道面试题:

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()); }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM