substring(i, j)是对字符串进行截取,然后是左闭右开区间也就是,j是不取的,下标从0开始
import java.net.Inet4Address;
import java.nio.channels.NonWritableChannelException;
import java.util.HashSet;
import java.util.Map;
import java.util.Scanner;
public class Test5 {
//输入ababc 输出28
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String s=sc.nextLine();
int k=0;
int sum=0;
String map[]=new String[10000000];
//截取字符串
for (int i = 0; i < s.length(); i++) {
for (int j = i+1; j <= s.length(); j++) {
map[k]=s.substring(i, j);
k++;
}
}
//去重HashSet
for (int i = 0; i <k; i++) {
//在这个for循环里面每次都相当于重置了name,name里面就什么也没有了
HashSet<String> name = new HashSet<>();
for (int j = 0; j < map[i].length(); j++) {
name.add(map[i].charAt(j)+"");
}
//直接去算name的长度size()
sum=sum+name.size();
}
System.out.print(sum);
}
}
HashSet的一个例子:
对于一个字符串,找到第一次重复出现的字符。
给定一个字符串(不一定全为字母),请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。
测试样例:
“ahwh25ertdd”
返回:h
import java.util.HashSet;
public class Test6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[] = new int[100];
String string="ahwh25ertdd";
HashSet<String> hs=new HashSet<>();
for(int i=0; i<string.length();i++)
{
if (!hs.add(string.charAt(i)+"")) {
System.out.print(string.charAt(i));
break;
}
}
}
}