求字符串的所有子串

求字符串的所有子串,子串是保持原来的字符串的顺序的,如下面问题:
给定一个字符串,输出其所有连续子串,如:给定字符串为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类

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值