问题描述
对于一个字符串 ,我们定义 的分值 为 中出现的不同的字符个数。例如 "aba","abc", "aaa"。
现在给定一个字符串 (长度为 ),请你计算对于所有 的非空子串 ,的和是多少。
输入格式
输入一行包含一个由小写字母组成的字符串 。
输出格式
输出一个整数表示答案。
样例输入
ababc
Data
样例输出
28
Data
样例说明
子串 f值
a 1
ab 2
aba 2
abab 2
ababc 3
b 1
ba 2
bab 2
babc 3
a 1
ab 2
abc 3
b 1
bc 2
c 1
思路:划分子数组,再用set去重,最后累加set.size()
仅通过60%测试用例,仅供参考。
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
char[] cAr = str.toCharArray();
int ans = 0;
for (int i = 0; i < cAr.length; i++) {
Set<Character> set = new HashSet<>();
for (int j = i; j < cAr.length; j++) {
set.add(cAr[j]);
ans += set.size();
}
}
System.out.println(ans);
}
}