算法1-交替组成字符串

题目:
给定一个字符串,要求判断是否由另外两个给定字符串的交替组成

分析:
//两个字符串交替组成另一个字符串问题,给定一个字符串3,判断是否由字符串1,2交替组成
//样本对应模型,str1,str2两个样本对应str3,

假设字符串如下
str1:=“aaabsk” str2:=“aacfk” str3:=“aaacaabfskk”

新建一个[][]bool 多维矩阵 横向是str2,纵向是str1

将str1 str2 str3分别对应到矩阵的位置上,str3[i+j]上的字符,必然来自str1[i]或者str2的[j]

str3的i+j位置只要是str1或者str2中的一个字符,,并且行方向上前一个,即j-1为rue,列方向上,上方的值即j-1的值为true,将dp对应位置赋值为true

在这里插入图片描述

下面看代码:


//字符串交替组成另一个字符串问题,给定一个字符串3,判断是否由字符串1,2交替组成
//
//str1:="aaabsk"   str2:="aacfk"  str3:="aaacaabfskk"
func mixstr(str1 string,str2 string ,str3 string) bool{
	if len(str3) != len(str1)+len(str2){
		return false
	}
	var dp [][]bool
	for i :=0;i<len(str1)+1;i++{
		tmp:=make([]bool,len(str2)+1)
		dp=append(dp,tmp)
	}
	dp[0][0]=true
	fmt.Println(dp)
	for i:=0;i<len(str2)+1;i++{
		if str2[i]==str3[i]{
			dp[0][i+1]=true
		}else{
			break
		}
	}
	for i:=0;i<len(str1)+1;i++{
		if str1[i]==str3[i]{
			dp[i+1][0]=true
		}else{
			break
		}
	}
	for i:=1;i<=len(str1);i++{
		for j:=1;j<=len(str2);j++{
			if (str3[i+j-1]==str2[j-1] && dp[i][j-1]) || (str3[i+j-1]==str1[i-1] && dp[i-1][j]){
				dp[i][j]=true
			}
		}
	}
	fmt.Println(dp)

	return true
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值