求字符串中第一次出现次数最多的字符

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
         String str="bbabbaaa";
         char[] ch=str.toCharArray();
         char dc=getChar(ch);
         System.out.println(dc);
         
    }

    private static char getChar(char[] ch) {
        // TODO Auto-generated method stub
        int count=0;
        char tem=ch[0];
        int max=0;
        HashSet hs=new HashSet<>();
        for(int i=0;i             //优化1:排除掉重复元素与数组的比较
            /*if(hs.contains(ch[i]))
                continue;*/
            
            //依次取字符数组中的元素,与数组中的的每个元素比较,并记录次数
            for(int j=0;j                 if(ch[i]==ch[j]){
                    count++;
                }
            }
            
            //优化2:若某个字符串的计数值大于字符串长度的一半(不清楚有多少个不重复的字符)那么它就是最终值
            /* if(count>ch.length/2)
                return ch[i];*/
            
             
             //若某个元素次数最大,则将次数和字符分别保存在max和tem变量中
            //因为此处的比较条件是大于,所以tem保存的字符始终是第一个出现的的且出现次数最多的字符
            //若是要取最后出现的次数最大字符,要把条件换成大于等于    
             if(count>max){
                    max=count;
                    tem=ch[i];
                }
                count=0;
                //hs.add(ch[i]);//优化1的片段
            
        }
        return tem;
    }

}
 

你可能感兴趣的:(java,笔记)