蓝桥杯 不同子串

在这里插入图片描述
思路:本题思路很简单,就是遍历字符串,依次截取不同长度的字符串,但是会出现相同字符串重复出现的现象,因此需要用到set集合,实现自动去重,截取的字符串存放到set集合,然后输出集合大小便是不同子串的个数。


/*
 * 第二题:不同子串
题目描述
 一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串。
 例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共 7 个。
  注意在计算时,只算本质不同的串的个数。
 请问,字符串0100110001010001 有多少个不同的非空子串?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
 */
//思想:set集合自动去重,遍历字符串,将不同长度的字符串截取,放到set中,然后输出集合的大小就可以了
import java.util.HashSet;
import java.util.Set;
public class Main {
public static int getSum(String s) {
Set<String> set = new HashSet<String>() ;
for(int i=0; i<s.length(); i++) {
for(int j=i+1; j<=s.length(); j++) {
   String result = s.substring(i, j) ;
   set.add(result) ;
}
}
return set.size() ;
}
public static void main(String[] args) {

String s = "0100110001010001" ;
System.out.println(getSum(s)) ; //结果是100
}
}

发布了52 篇原创文章 · 获赞 45 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/nuist_NJUPT/article/details/105357761