求字符串的所有子串

来源:互联网 发布:python 中英文转换 编辑:程序博客网 时间:2024/06/05 20:00

求字符串的所有子串,子串是保持原来的字符串的顺序的,如下面问题:
给定一个字符串,输出其所有连续子串,如:给定字符串为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.html2. http://blog.sina.com.cn/s/blog_402d5d130101otu5.html

注意
本地工程索引:Demo2这个工程中的StringConbine类

0 1
原创粉丝点击