Lintcode:交叉字符串(2018春招TEVC笔试编程题)

该博客探讨了如何使用动态规划(DP)解决编程面试题目,即判断一个字符串C是否由两个给定字符串A和B交错组成。通过分析状态转移方程`f(i,j)=(f(i-1,j)&&A[i-1]==C[j+i-1])||(f(i,j-1)&&B[j-1]==C[i+j-1])`,博主展示了高效判断的方法,并提供了测试样例和预期结果。" 128964879,7925799,Centos7 编译RTL8812AU驱动修复IEEE80211_BAND_2GHZ错误,"['Linux驱动', 'Centos', 'Realtek', '无线网卡', '编译问题']
摘要由CSDN通过智能技术生成
题目:

  对于三个字符串A,B,C。我们称C由A和B交错组成当且仅当C包含且仅包含A,B中所有字符,且对应的顺序不改变。请编写一个高效算法,判断C串是否由A和B交错组成。

给定三个字符串A,B和C,及他们的长度。请返回一个bool值,代表C是否由A和B交错组成。保证三个串的长度均小于等于100。
测试样例:
"ABC",3,"12C",3,"A12BCC",6

返回:true


分析:使用DP动态规划,状态转移方程为f(i,j)=(f(i-1,j)&&A[i-1]==C[j+i-1])||(f(i,j-1)&&B[j-1]==C[i+j-1])).

public boolean isInterleave(String A,String B,String C){
        if(A.length()+B.length()!=C.length())   return false;
        boolean [][]d=new boolean[A.length()+1][B.length()+1];
        for(int i=0;i<=A.length();i++){
            for(int j=0;j<=B.length();j++){
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值