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

题目描述

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

输入描述:

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

输出描述:

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

输入例子:

abc

输出例子:

3

解法一:

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());
    }
}

 

 

 

 

 

 

posted @ 2017-04-26 12:04  过道  阅读(280)  评论(0)    收藏  举报