如何统计不重复存在的字母个数
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)
将字符串拆分成字符,存入一个Set
。 Set
只保留唯一元素。 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
你可以做的是:
- 创建一个空列表
a
- 列表中的字符:
- 如果该角色不在您的列表中
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()
来获得您期望的输出。
我想要一种方法来计算字符串中的字母,例如:
我的字符串:"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)
将字符串拆分成字符,存入一个Set
。 Set
只保留唯一元素。 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
你可以做的是:
- 创建一个空列表
a
- 列表中的字符:
- 如果该角色不在您的列表中
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()
来获得您期望的输出。