字符串中重复字符的下标打印

使用LinkedHashMap来把字符串中每种字符的下标存储到对应的集合中。
利用LinkedHashMap的有序性(提取元素和添加元素的顺序一致)来直接生成答案

public static void printIndexes(String str){
        LinkedHashMap<Character, List<Integer>> IndexSet = new LinkedHashMap<>();

        for(int i=0;i<str.length();i++){
            Character c = str.charAt(i);
            if(!IndexSet.containsKey(c)){
                IndexSet.put(c, new ArrayList<Integer>());
            }
            IndexSet.get(c).add(i);
        }

        StringBuilder sb = new StringBuilder();
        for(char key:IndexSet.keySet()){
            List<Integer> values = IndexSet.get(key);
            if(values.size()>1){
                for(int i:values) {
                    sb.append(key+&quot;,&quot;+i+&quot;,&quot;);
                }
            }
        }
        sb.deleteCharAt(sb.length()-1);
        System.out.println(sb);
    }

     String str = &quot;afcacbcbcki&quot;;
     printIndexes(str);
     a,0,a,3,c,2,c,4,c,6,c,8,b,5,b,7
全部评论

相关推荐

08-19 18:59
已编辑
绍兴文理学院 Java
一只末影酱:一、1w+qps嘛感觉数据有点太夸张了 二、还有就是99.95%这些,本身大部分学生做的小项目基本是100%,因为量太小了,网络抖动问题也基本模拟不出来,感觉这些不太好写 三、你这些项目,都是一个月就做完了,更抽象了,也就是大概意味着,没有技术调研,没有上线测试,
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务