【发布时间】:2020-12-17 17:14:28
【问题描述】:
我有一个字符串,现在想计算子字符串的最小数量,这样子字符串中的字母应该只出现一次。
示例:
Input : cycle
Output : 2
解释:
Possible substrings are : ('cy', 'cle') or ('c', 'ycle')
示例:
Input : aaaa
Output : 4
解释:
Possible substrings are : ('a', 'a', 'a', 'a')
我能够获取所有可能的子字符串,但我无法理解如何实现此任务的解决方案:
static int distinctSubString(String S) {
int count = 0;
int n = S.length();
for (int i = 0; i < n; i++) {
for (int j = i + 1; j <= n; j++) {
String s = S.substring(i, j);
System.out.println(s);
}
}
return count;
}
【问题讨论】:
-
我将通过逐个添加字符来构造子字符串,直到您达到当前子字符串中已经存在的字符,此时我将开始一个新子字符串并增加计数>
-
我建议在计算可能的子字符串数量时,计算该特定子字符串中唯一字母的数量,如果它等于子字符串的长度,就可以了。如果该特定 n 的每个子字符串都可以,则可以将这些子字符串添加到输出
-
@Aaron,如果我按照这种方式,我将只能得到
('cy', 'cle')的权利。我不会得到('c', 'ycle') -
你是对的,但我不相信如果你只需要返回最少量的子字符串,这是有问题的。如果您需要显示所有可能的最小长度子字符串,您可能希望在您的问题中更清楚
-
那么子字符串必须覆盖所有字符串?