【问题描述】 一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共 7 个。 注意在计算时,只算本质不同的串的个数。 请问,字符串0100110001010001 有多少个不同的非空子串?
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Main {
static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
static Scanner input = new Scanner(System.in);
public static void main(String[] args) throws IOException {
String str = input.nextLine();
String[] s = new String[4000000];
int k = 0;
for (int i = 0; i < str.length(); i++) {
for (int j = i + 1; j <= str.length(); j++) {
s[k++] = str.substring(i, j);
}
}
Set<String> set = new HashSet<String>();
for (int i = 0; i < s.length; i++) {
set.add(s[i]);
}
System.out.println(set.size());
}
}
为什么是101而不是100呢 (遍历 的数组aa有个空值也算一个)
看下面这个!@
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Main {
static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
static Scanner input = new Scanner(System.in);
public static void main(String[] args) throws IOException {
String str = "0100110001010001";
Set<String> set = new HashSet<String>();
for (int i = 0; i < str.length(); i++) {
for (int j = i + 1; j <= str.length(); j++) {
String str1 = str.substring(i, j);
set.add(str1);
}
}
System.out.println(set.size());
}
}