求字符串的所有子串,子串是保持原来的字符串的顺序的,如下面问题:
给定一个字符串,输出其所有连续子串,如:给定字符串为abcd,则要输出的其全部连续子串为:a,b,c,d,ab,bc,cd,abc,bcd,abcd。
思路:
1. 用递归法
尝试用递归法,但结果没分析出,不知道思路
2. 非递归方法
输出数据如上述 a,b,c,d,ab,bc,cd,abc,bcd,abcd 来写算法,但是代码输出结果并不是上述的结果
```
public static void solve(char[] arr){
for(int i = 0;i<arr.length;i++)
for(int j=i;j<arr.length;j++)
for(int m =i; m<=(m+j) && m<arr.length;m++){
//if(m == arr.length)
//return;
System.out.println(arr[m]);
// System.out.println();
}
System.out.println();
}
```
输出数据如上述 a,ab,abc,b,bc,bcd,c,cd,d, abcd 来写算法,并参考其他博客
```
static void find(char[] arr, int high){
int i, j, k;
for(i =0;i<= high;i++){
for(j = i;j<=high;j++){
//String str,str1 = "";
for(k = i; k<=j;k++){
String str ="";
str += String.valueOf(arr[k]);
//str1 += str;
//arr[k] += arr[k];
System.out.println(str);
//str1 = str;
}
System.out.println();
}
System.out.println();
}
}
```
还有一种方式,该方式使用java 中的类string对象的substring方法,代码如下:
static void findAllSubstrings(String str,int length){
for(int i = 0 ; i < length ; i++ ){
for(int j = 1 ; j <= length - i ; j++ ){
String sub = str.substring(i, i+j);
System.out.println(sub);
}
}
}
**参考:**
1. http://www.cnblogs.com/huanglei/p/3677707.html
2. http://blog.sina.com.cn/s/blog_402d5d130101otu5.html
注意
本地工程索引:Demo2这个工程中的StringConbine类