java--------------华为--------------------字符个数统计

来源:互联网 发布:在淘宝店上怎样上图 编辑:程序博客网 时间:2024/06/05 00:20

题目描述

编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。


输入描述:

输入N个字符,字符在ACSII码范围内。



输出描述:

输出范围在(0~127)字符的个数。


输入例子:
abc

输出例子:
3

解法一:

import java.util.ArrayList;import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        while(sc.hasNext()){                        String str=sc.nextLine();//输入字符串            int len=str.length();//计算字符串长度                                    int[] count= new int[128];            //new一个int数组,作为某个char是否出现过的标记,            // 如aaa,则count[(int)a]=1;则‘a’出现过            /*             *接下来循环遍历String,             * 用count数组标记出现过的char,             *int一个num作为出现过的总数             */            int num=0;            for(int i=0;i<len;i++){                int numOfChar_ASCII=str.charAt(i);                if(count[numOfChar_ASCII]!=1){                    count[numOfChar_ASCII]=1;                    num++;                }            }            //输出结果            System.out.println(num);        }    }}
解法二:

import java.util.HashMap;import java.util.Map;import java.util.Scanner;//编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。public class Main{    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        String str = sc.next();        Map<Integer, Boolean> map = new HashMap<>();        //定义一个Map直接表示char是否出现过        for(int i = 0; i < str.length(); i++){            char ch = str.charAt(i);//逐个获取字符            if(ch >= 0 && ch <= 127){//首先字符在0~127的范围内                if(!map.containsKey(ch)){                    //如果字符不再map中则添加到map中,且将对应的value改为true                    map.put((int)ch, true);                }            }        }        System.out.println(map.size());    }}




0 0
原创粉丝点击