其他分享
首页 > 其他分享> > 面试题:寻找字符串中出现频次最高且最先出现的字符

面试题:寻找字符串中出现频次最高且最先出现的字符

作者:互联网

面试题:寻找字符串中出现频次最高且最先出现的字符

题目:假设有一个字符串,字符串内部的所有字符都是在ascii编码的范围内,编码求出字符串中出现频率最高的字符,如果频率最高的字符有几个字符出现的频率一样,则输出最先出现的字符。
如输入串为"hello world,every body!",则输出频率最高且最先出现的字符’e’
方法定义:char getMaxOccurChar(String str)

思路:

import java.util.Arrays;

public class StrMaxOccurChar {
    public static void main(String[] args) {
        String s = "p4r9weugh095eut";
        System.out.println(getMaxOccurChar(s));
    }
    public static char getMaxOccurChar(String s){
    	char[] arr = s.toCharArray();
        int n = arr.length;
        if(n == 0) return ' ';
        int[] numArr = new int[128];
        Arrays.fill(numArr,0);
        int i ;
        int max = 0;//最高频次
        char result = ' ';//结果字符
        for(i = n-1;i >= 0;i--){//倒序遍历
            int index = (byte)arr[i];
            numArr[index] = numArr[index]+1;
            if(numArr[index]>=max){//动态更新最高频次及对应字符
                max = numArr[index];
                result = arr[i];
            }
        }
        return result;
    }
}

拓展:

标签:字符,面试题,String,index,int,频次,char,numArr,字符串
来源: https://blog.csdn.net/weixin_43202834/article/details/121568288