面试|有关字符串中字符出现重复字符的面试问题,这里都有了

下面是总结的一些常见问题,以供大家参考

  1. 第一次出现重复字符
  2. 出现的重复字符
  3. 出现字符串、字符还有次数
  4. 出现次数最多的字符及次数
class Eclass{
    public static void main(String[] args) {
        String str = "eeeejwurihewweafa";
        Eclass e = new Eclass();
        //问题一
        int index = e.Method(str);
        String result = str.charAt(index)+"";
        System.out.println(result);
        //问题二
        List<Character> list = e.douMethod(str);
        for (Character c :list
             ) {
            System.out.println(c+"\t");
        }
        //问题三
        e.stringCount(str);

        //问题四
        e.maxString(str);

    }
    //第一次出现重复字符
    public int Method(String str){
        int index=-1;
        int length=str.length();
        for (int i=0;i<length;i++){
            char c = str.charAt(i);
            //在str中从i+1开始检索,如果c存在,返回第一个c的下标,如果不存在返回-1
            if ((str.indexOf(c,i+1))!=-1){
                index=i;
                break;
            }
        }
        return index;
    }
    //出现的重复字符
    public List<Character>  douMethod(String str){
        int index=-1;
        int length=str.length();
        List list = new ArrayList();
        for (int i=0;i<length;i++){
            char c = str.charAt(i);
            //在str中从i+1开始检索,如果c存在,返回第一个c的下标,如果不存在返回-1
            if ((str.indexOf(c,i+1))!=-1){
                index=i;
                //判断集合中是否存在
                if (!list.contains(c))
                list.add(c);
            }
        }
        return list;
    }
    //出现字符串、字符还有次数
    public void stringCount(String str){
        Map<Character,Integer> map = new HashMap<>();
        for (int i= 0; i<str.length();i++){
            if (map.get(str.charAt(i))!=null){
                map.put(str.charAt(i),map.get(str.charAt(i))+1);
            }else {
                map.put(str.charAt(i),1);
            }
        }
        System.out.println(map);
    }
    //出现次数最多的字符的次数
    public void maxString(String str) {
        Map<Character, Integer> map = new HashMap<>();
        int max = 0;		//出现最多的次数
        String maxCha="";  //次数最多的字符
        for (int i = 0; i < str.length(); i++) {
            if (map.get(str.charAt(i)) != null) {
                map.put(str.charAt(i), map.get(str.charAt(i)) + 1);
            } else {
                map.put(str.charAt(i), 1);
            }
        }
        for (Character c: map.keySet()
        ){
            if (map.get(c)>max){
                max=map.get(c);
                maxCha=c+"";
            }else {
                max=max;
            }
        }
        System.out.println("出现最多的字符:"+maxCha+",出现了"+max+"次");
    }
  }
©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页