面試|有關字符串中字符出現重複字符的面試問題,這裏都有了

下面是總結的一些常見問題,以供大家參考

  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+"次");
    }
  }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章