🧑🎓个人介绍:大二软件生,现学JAVA、Linux、MySQL、算法
💻博客主页:渡过晚枫渡过晚枫
👓系列专栏:[编程神域 C语言],[java/初学者],[蓝桥杯]📖阶段目标:备战2023蓝桥杯java个人赛
👻不能逃避,不能逃避,不能逃避,去成为更好的自己!👻
一、🍁题目描述:
一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成
的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共 7 个。
注意在计算时,只算本质不同的串的个数。
请问,字符串0100110001010001 有多少个不同的非空子串?
二、🍁题目分析:
三、🍁解题代码:
package Lanqiao_2019;
public class C
{
public static void main(String[] args)
{
String str="0100110001010001";
int sum=0;
for(int i=1;i<=str.length();i++)
{//每次取i个长度
String[] str1=new String[str.length()+1-i];//定义一个数组存放截取的字符串
int m=0;//数组中已存入元素个数
for(int j=0;j<str.length()+1-i;j++)
{//取到哪位结束
String str2=str.substring(j,j+i);//利用String的substring()方法进行字符串切割
//判断数组单中是否已存在该字符串
boolean sign=true;
for(int n=0;n<=m;n++)
{
if(str2.equals(str1[n]))
{
sign=false;
break;
}
}
//存入数组
if(sign)
{
str1[m]=str2;
System.out.println(str2);
m++;
sum++;
}
}
}
System.out.println(sum);
}
}