题目:
一个字符串的非空子串是指字符串中长度至少为1 的连续的一段字符组成
的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共7 个。
注意在计算时,只算本质不同的串的个数。
请问,字符串0100110001010001 有多少个不同的非空子串?
这是一道结果填空的题,你只需要算出结果后提交即可。
思路:
使用HashSet,将所有可能的字串加入到集合里。它会自动减去重复的数字,最终返回集合里的个数就是答案
import java.util.*;
import java.util.HashSet; //必须的
import java.util.Set; //必须的
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String s1="aaab";
String s2="0100110001010001";
System.out.println(subsum(s1));
System.out.println(subsum(s2));
}
static int subsum(String s)
{
Set<String>set = new HashSet<String>();
for(int i=0;i<s.length();i++)
for(int j=i;j<s.length();j++)
set.add(s.substring(i,j+1));
return set.size(); //返回可能的个数
}
}