华为在线编程题系列-10-字符个数统计


问题描述:

问题描述

1. 问题涉及知识点.

  • 去重,不排.
  • HashSet

2. 自己解法.

  • 方法一,使用传统方法.把一次取字符存入新的不重复数组,检测新数组长度.
package com.chaoxiong.niuke.huawei;

import java.util.Scanner;
/**
 * Create by tianchaoxiong on 18-4-9.
 */
public class HuaWei_10 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            String key = scanner.nextLine();
            int result = getResult(key);
            System.out.println(result);
        }
    }

    private static int getResult(String key) {
        char []charArr = key.toCharArray();
        char []charArr2 = new char[charArr.length];
        int charArrIndex2 =0;
        for(char each :charArr){
            if(isStand(each,charArr2,charArrIndex2)){
                charArr2[charArrIndex2] = each;
                charArrIndex2 ++;
            }
        }
        return charArrIndex2;
    }

    private static boolean isStand(char key, char[] charArr2, int charArrIndex2) {
        // 1:ASCII在1到127
        if((int)key<0||(int)key>127){
            return false;
        }
        // 2:不重复
        for(int i=0;i<charArrIndex2;i++){
            if(key==charArr2[i]){
                return false;
            }
        }
        return true;
    }
}
  • 方法二,使用set进行去重复,然后使用set.length()计算长度.
package com.chaoxiong.niuke.huawei;

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

/**
 * Create by tianchaoxiong on 18-4-9.
 */
public class HuaWei_10_2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            String key = scanner.nextLine();
            System.out.println(getResult(key));
        }
    }

    private static int getResult(String key) {
        Set<Character> chars = new HashSet<Character>();
        for(char each :key.toCharArray()){
            chars.add(each);
        }
        return chars.size();

    }

}

3. 优质答案.

null

4. 本题总结.

  • 如果题目中有去重需求的话,首先想到的就是set,如果去重的同时还需要排序,那么TreeSet则是最适用的,如果仅去重复HashSet.

猜你喜欢

转载自blog.csdn.net/u012222078/article/details/80202784