问题描述:
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
.