面试题查找重复元素并打印重复次数和重复位置,一顿懵逼,回来死磕写下来,打印指定重复次数和最大次数,其他在此基础上可以再更新

package sort;

import org.testng.annotations.Test;import sun.org.mozilla.javascript.internal.ast.NewExpression;

import java.util.*;

/** * Created by liangwei on 2018/10/18. */public class SearchString {    /**     * 找出重复字符、记录重复字符次数、记录重复字符位置     * @param str     * @return map     */    public Map get_str_count_index(String[] str){        Map<String,Map<Integer,ArrayList>> map = new HashMap<String ,Map<Integer,ArrayList>>();//key值记录重复的字符串,value记录出现的次数和位置        int i = 0;        for (String s:str ){            if (map.get(s)==null){                Map<Integer,ArrayList> count_where = new HashMap<Integer ,ArrayList>();//key值记录重复字符串出现的次数,value记录重复字符出现的位置                int count = 1;//重复字符串计数器                ArrayList<Integer> list = new ArrayList<Integer>();                list.add(i);//重复字符串下标                count_where.put(count,list);                map.put(s,count_where);                i++;            }else {                for (int c:map.get(s).keySet()){                    ArrayList index = map.get(s).get(c);                    index.add(i);//增加出现index位置                    c++;                    map.get(s).put(c,index);//更新计数器和下标信息                    map.get(s).remove(--c);//删除掉之前的记录信息                }                i++;            }        }        return map;    }

    public void display(String[] arry) throws Exception{        if (arry==null){            throw new Exception("输入数组为空,请重新输入");        }        Map<String,HashMap<Integer,ArrayList>> map = get_str_count_index(arry);        ArrayList count = new ArrayList<Integer>();//存取所有字符串出现的次数        for (Map.Entry<String,HashMap<Integer,ArrayList>> key : map.entrySet()){//循环获取记录字符串重复次数和位置map            for (Map.Entry<Integer,ArrayList> map1 :key.getValue().entrySet()){//循环获取记录字符串重复次数                count.add(map1.getKey());            }        }       // Arrays.sort(count.toArray());        Collections.sort(count);//对集合排序,默认是升序,最后一个是重复次数最多的        //打印重复次数最多的元素信息        for (String key : map.keySet()){//循环获取所有的重复字符串            for (int c:map.get(key).keySet()){//循环获取重复字符串的次数                if (c == count.get(count.size()-1)){//和最大重复次数对比,相等就代表当前的字符串是重复次数最多的那个                    System.out.printf("重复次数最多的字符串是:%s,重复次数%d,所在位置:%s\n",key,c,map.get(key).get(c));                }            }        }        //输出指定重复次数的字符串信息        for (String key :map.keySet()){            for (int c:map.get(key).keySet()){                if (c==5||c==6||c==1){                    System.out.printf("重复字符串:%s,重复次数:%d,重复字符串出现位置:%s\n",key,c,map.get(key).get(c));                }            }        }    }

    public static void main(String[] args) {        String[] arry = {"aa","bb","cc","bb","aa","ooo","dd","aaa","aa"};       // String[] arry = {};        SearchString searchString = new SearchString();        try {            searchString.display(arry);        } catch (Exception e) {            e.printStackTrace();        }    }}

转载于:https://www.cnblogs.com/lanrumeng/p/9814088.html

Java查找数组重复元素,并打印重复元素、重复次数、重复元素位置相关推荐

  1. Java 查找数组中某个数字的下标

    实现功能: 例如: 在数组{15,13,27,11,55,45,23,28)中找出45的下标 结果为:5 代码如下: package come.base; public class xiabiao { ...

  2. JavaScript 与java中数组的区别

    1. JavaScript 中的数组的长度是可变的     Java中数组的长度是固定的 2.javaScript中的元素是可以是任意类型

  3. java数组找出重复元素及次数_Java查找数组重复元素,并打印重复元素、重复次数、重复元素位置...

    面试题查找重复元素并打印重复次数和重复位置,一顿懵逼,回来死磕写下来,打印指定重复次数和最大次数,其他在此基础上可以再更新 package sort; import org.testng.annota ...

  4. Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素-un

    ylbtech-Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素 1.返回顶部 1. Java 实例 - 查找数组中的重复元素  Java 实例 以下实例 ...

  5. Java 数组常用操作二(扩充、扩容、重复数据、动态数组、数组差集、数组交集、查找指定元素、判断是否相同、数组合并)

    数组扩容(扩充) public class Main {public static void main(String[] args) {String[] names = new String[] { ...

  6. 题目:查找数组中的重复数字,要求空间复杂度为O(1)(基于Java实现)

    题目:查找数组中的重复数字,要求空间复杂度为O(1)(基于Java实现) 题目: 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字 ...

  7. java从数组查找指定整数_如何在Java中使用重复项查找整数数组中的K个缺失数字?...

    java从数组查找指定整数 自从我讨论任何编码或算法面试问题以来已经有很长时间了,因此我想重新考虑一种最流行的基于数组的编码问题,即在给定数组中查找缺失的数字. 在进行编程工作面试之前,您可能已经听说 ...

  8. java删除数组中重复元素

    id="BAIDU_DUP_fp_iframe" src="https://pos.baidu.com/wh/o.htm?ltr="> > src= ...

  9. php 查找数组相同元素,查找数组中重复的元素

    本文收集整理关于查找数组中重复的元素的相关议题,使用内容导航快速到达. 内容导航: Q1:在c语言中输入数组两个数组,查找重复元素并输出怎么写啊 可以一次读入N个数据.可以考虑以回车结束读入的一组. ...

最新文章

  1. jwt单点登录_单点登录SSO技术选型
  2. 致命问题多数据源引发SpringBatch多事物
  3. Composer 本地路径加载 laravel-admin 扩展包
  4. 漫画:下辈子你还当程序员么?
  5. UNIGUI中如果获得Session情况
  6. cad菜单栏快捷键_教你如何用富怡服装CAD画男衬衫的结构设计
  7. VirtualXposed 免ROOT使用Xposed模块
  8. 用户画像基础之应用落地和案例展示
  9. ITIL 4Foundation认证
  10. 特征函数(characteristic function)
  11. Linux僵尸进程堆栈分析,linux系统僵尸进程
  12. 实测:华为鸿蒙系统比 Android 系统快 60%!
  13. 【计网知识点总结】2 物理层
  14. 遗传算法(GA/NSGA)优化神经网络 GA-BP
  15. solo 电路 耳放_Graham Slee SOLO 耳机放大器发展史
  16. AE学习笔记 环绕粒子光线特效
  17. 积分体系与会员体系之间的那些事
  18. 三菱a系列motion软体_三菱M70第四轴参数设定一览表
  19. 广东高考英语计算机辅助口语考试,广东高考英语人机对话口语考试题型分析及备考策略...
  20. 网络安全级别划分为几个等级?网络安全入门

热门文章

  1. python自动登录教程_python实现校园网自动登录的示例讲解
  2. 训练和验证准确性_通过沉浸式虚拟现实观察动作增强运动想象训练
  3. 零基础学python语言_零基础如何入门Python语言?有哪些学习建议?
  4. miui 8 android对应关系,小米回应MIUI版本和安卓版本没有对应关系 你怎么看
  5. apache禁止访问html,apache 限制目录访问
  6. 2016江苏计算机二级考试时间,2016年江苏计算机二级考试报名时间_无忧考网.pdf...
  7. STM32CubedMX 下载与安装
  8. 2021年春季学期-信号与系统-第十二次作业参考答案-第四小题
  9. 工科学生懂艺术,魔鬼神仙挡不住
  10. Prolific PL2303SA 调试