华为机试108题

统计大写字母个数

找出给定字符串中大写字符(即’A’-‘Z’)的个数

接口说明

原型:int CalcCapital(String str);

返回值:int
输入:

add123#$%#%#O

输出:

1
import  java.util.Scanner;
import  java.util.Set;
import  java.util.HashSet;
public class Main{
    public static void main(String [] args){
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){
        String res=in.next();
        System.out.println(CalcCapital(res));}
        
    }
    
    public static int CalcCapital(String str){
        char[] chars=str.toCharArray();
        Set<Character>  set=new HashSet();
        int count=0;
        for(int i=65;i<91;i++){
            set.add((char)i);
        }
        for(int i=0;i<chars.length;i++){
            if(set.contains(chars[i])){
                count++;
            }
        }
        return count;
    }
}

字符统计

如果统计的个数相同,则按照ASCII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。

实现以下接口:
输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)
按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出
清空目前的统计结果,重新统计
调用者会保证:
输入的字符串以‘\0’结尾

import java.io.BufferedReader;


import java.util.Scanner;
public class Main{
    public static void main(String[] args)
    {
        Scanner in=new Scanner(System.in);
       
        String str;
        
            while(in.hasNext())
            {
                str=in.next();
                System.out.println(count(str).toString());
            }
      
    }
    public static StringBuilder count(String str)
    {
        char[] strArray=str.toCharArray();
        int[] chArray=new int[129];
        //字符对应ascll码值下标元素自增来统计数量
        for(char i:strArray)
            chArray[(int)i]++;
        int max=0;
        //找出字符数量最多的ascll码值
        for(int i=0;i<chArray.length;i++)
            if(max<chArray[i])
                max=chArray[i];
        StringBuilder sb=new StringBuilder();
        //按数量从大到小添加到可变字符序列sb
        while(max!=0)
        {
            for(int i=0;i<chArray.length;i++)
                if(chArray[i]==max)
                    sb.append((char)i);
            max--;
        }
        return sb;
    }
}

你可能感兴趣的:(算法)