字符串中统计某字母的次数等【Java Base】

【题目】给你一个字符串,包含了空格等标点符号,要你计算出出现次数最多的字母和该字母出现的次数。
【code】:
private static void totalTimes(String str) {
char[] ch = str.toCharArray();
Map<Character, Integer> timesMap = new HashMap<Character, Integer>();

for (int i = 0; i < ch.length; i++) {
if ((ch[i] >= 65 && ch[i] <= 90) || (ch[i] >= 97 && ch[i] <= 122)) {
Integer freq = timesMap.get(ch[i]);
timesMap.put(ch[i], freq == null ? Integer.valueOf(1) : ++freq);
}
}

int charMaxIndex = Collections.max(timesMap.values());
int charMinIndex = Collections.min(timesMap.values());

Set<Character> maxSet = new HashSet<Character>();
Set<Character> minSet = new HashSet<Character>();

for(Map.Entry<Character, Integer> entry : timesMap.entrySet()){

if(entry.getValue().equals(charMaxIndex)){
maxSet.add(entry.getKey());
}

if(entry.getValue().equals(charMinIndex)){
minSet.add(entry.getKey());
}

}

System.out.println("出现最多的字母:" + maxSet);
System.out.println("出现次数:" + charMaxIndex);
System.out.println("出现最小的字母:" + minSet);
System.out.println("出现次数:" + charMinIndex);

}
当然,除了以上,每个人都会有自己心中的code,呵呵!如果不能利用到Java里的集合,那么就可能在数组上做文章了,如下:

  1. String str =  "hello wolrd wlllkdsfhksadfls?sdfls sdf.pqyutgvAAAxzsdfs "  +  
  2.                "lsdfj,ljsfd  ajfdsak sfksjdfisfsdkfj lsdfjsidf jsafdalsjfs sfskdfjs" ;  
  3.        int [] strCounts =  new   int [ 255 ];  
  4.        int  biggestCount =  0 ;  
  5.        char  biggestCh =  0 ;  
  6.        char  ch =  0 ;  
  7.        int  currentCount =  0 ;  
  8.        for  ( int  i = str.length() -  1 ; i >=  0 ; i--) {  
  9.            ch = str.charAt(i);  
  10.            currentCount = ++strCounts[ch];  
  11.            if  (currentCount > biggestCount) {  
  12.                biggestCount = currentCount;  
  13.                biggestCh = ch;  
  14.            }  
  15.        }  
  16.        System.out.println(biggestCh);  
  17.        System.out.println(biggestCount); 

你可能感兴趣的:(java,String,null,Integer)