递归和动态规划——字符串的子序列

打印一个字符串的全部子序列, 包括空字符串


在字符串的子序列中,每个字符都包含两种情况,
* 1.该字符在序列中
* 2.该字符不在序列中

 

解:递归

*base case:当前位置指向字符串的最后一个字符时,返回
所以在递归的过程中分为两种情况:
* 1.该字符在序列中
* 2.该字符不在序列中

 

public class Print_All_Subsequence {
    public void printAllSubsequenceStr(String str){
        if(str == null || str.length() == 0) return;

        char[] chars = str.toCharArray();
        subStr("", 0, chars);
    }

    public void subStr(String subStr, int index, char[] chars){
        if(index == chars.length){
            System.out.println(subStr);
            return;
        }
        //不要当前位置的字符
        subStr(subStr, index + 1, chars);
        //要当前位置的字符
        subStr(subStr + chars[index], index + 1, chars);
    }
    
    public static void main(String[] args){
        Print_All_Subsequence print_all_subsequence = new Print_All_Subsequence();
        print_all_subsequence.printAllSubsequenceStr( "abcs" );
    }
}

  

转载于:https://www.cnblogs.com/SkyeAngel/p/8965812.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值