如何统计不重复存在的字母个数

How to count the number of letters that exist without repeated

我想要一种方法来计算字符串中的字母,例如:

我的字符串:"Hello my friends "

字符串中的字符:{H,e,l,o, ,m,y,f,r,i,n,d,s}

这些字母不重复存在(有空格space) 所以我想要的结果是:13

所有这一切的目标是,我想将一个字符串转换为 table 个字符而不重复字母

EX: 我的字符串 = "Hello"

我要得到的table{H,e,l,o}

我的尝试

 public static int numberRep(String txt) {
    int count = 0;
        boolean v = false;
        for (int i = 0; i != txt.length(); i++) {
            char c = txt.charAt(i);
            for (int j = i + 1; j != txt.length(); j++) {
                if (txt.charAt(j) == c) {
                    count++;
                }
            }
            if(count == txt.length()-1){
                v = true;
            }
        }
        if(v){
            return 1 ;
        }
        else{
        return count;
        }

    }

嗯,这可能是这样做的方法之一:

String str = "Hello my friends "
String noRepeatStr = "";

for(int i = 0; i < str.length; i++) {
    if(noRepeatStr.indexOf(str[i]) == -1) // check if a char already exist, if not exist then return -1
        noRepeatStr = noRepeatStr+str[i];      // add new char
}

System.out.println("Letters: " + noRepeatStr.toCharArray())
System.out.println("No of letters: " + noRepeatStr.length)

将字符串拆分成字符,存入一个SetSet 只保留唯一元素。 Set 的元素将是所需的字符,Set 的大小将为您提供这些字符的数量。

按如下操作:

import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.stream.Collectors;

public class Testing {
    public static void main(String[] args) {
        String myString = "Hello my friends ";
        Set<String> set = Arrays.stream(myString.split("")).collect(Collectors.toCollection(LinkedHashSet::new));
        System.out.println("Unique characters including space: " + set);
        System.out.println("No. of unique characters including space: " + set.size());
    }
}

输出:

Unique characters including space: [H, e, l, o,  , m, y, f, r, i, n, d, s]
No. of unique characters including space: 13

你可以做的是:

  1. 创建一个空列表a
  2. 列表中的字符:
  3. 如果该角色不在您的列表中a:将其添加到您的列表中

这样你就不会得到任何重复的字符。

您也可以使用 Arvind 的回答中推荐的集合,但我认为您最好将函数编写为任务。 一旦掌握了 Java.

的概念,Set 就是一种更简洁的方法
 public static void main(String[] args) {
        final String test = "Hello my friends";

        final int size = IntStream.range(0, test.length())
                .mapToObj(test::charAt)
                .collect(Collectors.toSet()).size();

        System.out.println(size);
    }

我在这里所做的是迭代输入字符串中的所有字符,将它们映射到一个 char 对象,然后将它们收集到一个 Set - 而不是保留原始字符Set 我已经使用 .size() 来获得您期望的输出。