个人主页:西红柿炒鸡蛋儿的博客
系列专栏:蓝桥杯试题讲解集
推荐一款模拟面试、刷题神器:点击跳转网站
【问题描述】
一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成的串。例如,字符串 aaab 有非空子串 a, b, aa, ab, aaa, aab, aaab ,一共 7 个。注意在计算时,只算本质不同的串的个数。请问,字符串 0100110001010001 有多少个不同的非空子串?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
package 省题2019;
import java.util.HashMap;
import java.util.Map;
public class 不同子串 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//给定字符串
String str = "0100110001010001";
//求出字符串的长度
int length = str.length();
//使用map集合去重
Map<String,Integer> map = new HashMap<String,Integer>();
//利用循环截取字符串方式
for(int i = 0; i <= length; i++) {
for(int j = i; j <= length; j++) {
String ss = str.substring(i,j);
map.put(ss,0);
}
}
//这里要减一,因为(i = 0 ,j = 0)(i = j = length)时,
//截取的字符串为"",不是0也不是1
System.out.println(map.size() - 1);
}
}