目录
🍋题目描述
一个字符串的非空子串是指字符串中长度至少为1 的连续的一段字符组成
的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共7 个。
注意在计算时,只算本质不同的串的个数。
请问,字符串0100110001010001 有多少个不同的非空子串?
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
🍋思路
数字填空题。
就是暴力。
两个for循环直接暴力。相当于双指针问题。
要用到HashSet,因为它自带有查重功能。
- 答案:100
🍋源代码
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
String s="0100110001010001";
HashSet<String> set=new HashSet<>();
//暴力遍历
for(int i=0;i<s.length();i++) {
for(int j=i+1;j<=s.length();j++) {//注意j的最大值。边界问题,总是要注意。
set.add(s.substring(i, j));//左必右开。是下标的定义
}
}
System.out.println(set.size());//输出set有多少种字符。即答案。HashSet自带排重功能。
for(String a : set) {//用for方法遍历输出set的字符串
System.out.println(a);
}
}
}
🍋其他真题
链接: 最全的2021蓝桥杯算法课《算法很美》的学习笔记总目录+真题详解.