leetcode97. 交错字符串(动态规划)

给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。

示例 1:

输入: s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbcbcac”
输出: true

解题思路

数组含义:dp[i][j]s1的前i个和s2的前j个能否组成字符串s3的前i+j长度的子串
状态转移: dp[i][j]=dp[i][j]||(dp[i-1][j]&&s1.charAt(i-1)==s3.charAt(loc))在(i-1,j)的基础上, 判断新加入的s1的i位置是否匹配s3.

代码

class Solution {public boolean isInterleave(String s1, String s2, String s3) {int n=s1.length(),m=s2.length();if(n+m!=s3.length()) return false;boolean[][] dp=new boolean[n+1][m+1];dp[0][0]=true;for(int i=0;i<=n;i++)for(int j=0;j<=m;j++){int loc=i+j-1;if(i>0)dp[i][j]=dp[i][j]||(dp[i-1][j]&&s1.charAt(i-1)==s3.charAt(loc));if(j>0)dp[i][j]=dp[i][j]||(dp[i][j-1]&&s2.charAt(j-1)==s3.charAt(loc));}return dp[n][m];}
}

不一样的动态规划代码

class Solution {public static boolean isInterleave(String s1, String s2, String s3) {int n=s1.length(),m=s2.length();if(n+m!=s3.length()) return false;int[][] dp=new int[n+1][m+1];for(int i=1;i<=m;i++)if(s3.charAt(dp[0][i-1])==s2.charAt(i-1))dp[0][i]=dp[0][i-1]+1;else dp[0][i]=dp[0][i-1];for(int i=1;i<=n;i++)if(s3.charAt(dp[i-1][0])==s1.charAt(i-1))dp[i][0]=dp[i-1][0]+1;else dp[i][0]=dp[i-1][0];for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){    if(s3.charAt(dp[i-1][j])==s1.charAt(i-1))dp[i][j]= Math.max(Math.max(dp[i][j-1],dp[i-1][j]+1),dp[i][j]);if(s3.charAt(dp[i][j-1])==s2.charAt(j-1))dp[i][j]= Math.max(Math.max(dp[i-1][j],dp[i][j-1]+1),dp[i][j]);}   return  dp[n][m]==s3.length();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394318.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode】19. Remove Nth Node From End of List

Given a linked list, remove the nth node from the end of list and return its head. For example, Given linked list: 1->2->3->4->5, and n 2.After removing the second node from the end, the linked list becomes 1->2->3->5.题意&#xff1a;…

《网络空间欺骗:构筑欺骗防御的科学基石》一1.1 主动网络空间防御中网络空间抵赖与欺骗的视图...

1.1 主动网络空间防御中网络空间抵赖与欺骗的视图 本文讲的是网络空间欺骗&#xff1a;构筑欺骗防御的科学基石一1.1 主动网络空间防御中网络空间抵赖与欺骗的视图,将抵赖与欺骗纳入标准操作规程&#xff08;SOP&#xff09;&#xff1a;随着攻击技术的不断演进&#xff0c;网…

管桩的弹性模量计算公式_桩基设计计算公式

0.9300.71555.31201018001.130973355桩长21.3mN(KN)φfc(kN/m2)Ap(m2)f’s(kN/m2)A’s(m2)桩直径(m2)11518.963620.7119001.1309733553000000.0160849541.2标准值19006.29KN单桩承载力设计计算(建筑桩基技术规范08版)根据《建筑桩基技术规范》(JGJ94—2008), 单桩竖向极限承载力…

python函数的作用降低编程复杂度_Python语言程序设计 (第11期) 测验5: 函数和代码复用...

共10道单选题和2道编程题&#xff0c;限答1次、限时50分钟选择题1.以下选项不是函数作用的是&#xff1a;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫…

restful解决什么问题_当您陷入RESTful,WordPress和一个困难的地方时,如何解决CMS问题...

restful解决什么问题by Jessica Duffin Wolfe杰西卡达芬沃尔夫(Jessica Duffin Wolfe) 当您陷入RESTful&#xff0c;WordPress和一个困难的地方时&#xff0c;如何解决CMS问题 (How to solve a CMS problem when you’re caught between RESTful, WordPress, and a hard place…

InfluxDB的HTTP API写入操作

一、说明 为了方便&#xff0c;本文主要使用curl来发起http请求&#xff0c;示例当中也是使用curl这个工具来模拟HTTP 请求。 在实际使用中&#xff0c;可以将请求写入代码中&#xff0c;通过其他编程语言来模拟HTTP请求。 二、InfluxDB通过HTTP API操作数据库 1&#xff09;建…

揭开勒索软件的真面目

一、前言 2013年9月&#xff0c;戴尔公司的SecureWorks威胁应对部门&#xff08;CTU&#xff09;发现了一种名为“CryptoLocker”的勒索软件&#xff0c;它以邮件附件形式分发&#xff0c;感染计算机并加密近百种格式文件&#xff08;包括电子表格、数据库、图片等&#xff09;…

leetcode486. 预测赢家(动态规划)

给定一个表示分数的非负整数数组。 玩家1从数组任意一端拿取一个分数&#xff0c;随后玩家2继续从剩余数组任意一端拿取分数&#xff0c;然后玩家1拿&#xff0c;……。每次一个玩家只能拿取一个分数&#xff0c;分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终…

w550官方例程_急!求索爱w550的刷机所需要的所有文件! 全部分送上!

展开全部W550c行货软件升级使用国内行货W550c手机的朋友&#xff0c;将来是可以在62616964757a686964616fe58685e5aeb931333238646330官方网站使用随机数据线免费升级的&#xff0c;目前W550c的最新版本是R4AB048但是由于目前官方网站还未提供&#xff0c;大家敬请期待。W550c索…

python的xpath用法介绍_python爬虫之xpath的基本使用详解

本篇文章主要介绍了python爬虫之xpath的基本使用详解&#xff0c;现在分享给大家&#xff0c;也给大家做个参考。一起过来看看吧一、简介XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素&#xff…

杨波 微服务技术专家_专家称,这些是最有效的微服务测试策略

杨波 微服务技术专家by Jake Lumetta杰克卢米塔(Jake Lumetta) 专家称&#xff0c;这些是最有效的微服务测试策略 (These are the most effective microservice testing strategies, according to the experts) Testing microservices is hard. More specifically, end-to-end…

LRU算法实现

LRU是Last Recent Used 缩写&#xff0c;做为一种缓存算法&#xff0c;将最近较少使用的缓存失效。memcache采用了该算法。如下采用了一种PHP的实现方式。该算法将每次新增的内容&#xff0c;放到缓存顶部&#xff0c;达到缓存极限时&#xff0c;将缓存底部的内容清除。可以通过…

Java中的阻塞队列-LinkedBlockingQueue(二)

原文地址&#xff1a;http://benjaminwhx.com/2018/05/11/%E3%80%90%E7%BB%86%E8%B0%88Java%E5%B9%B6%E5%8F%91%E3%80%91%E8%B0%88%E8%B0%88LinkedBlockingQueue/ 在集合框架里&#xff0c;想必大家都用过ArrayList和LinkedList&#xff0c;也经常在面试中问到他们之间的区别。…

自动加密企业关键业务数据 赛门铁克推出全新信息保护解决方案

最新推出的Symantec Information Centric Security解决方案&#xff0c;能够帮助企业随时随地对数据进行自动加密、跟踪和撤销&#xff0c;提供卓越的可见性和管控力 近日&#xff0c;全球网络安全领域的领导者赛门铁克公司宣布推出一款全新的高级信息保护工具 Symantec Inform…

leetcode312. 戳气球(动态规划)

有 n 个气球&#xff0c;编号为0 到 n-1&#xff0c;每个气球上都标有一个数字&#xff0c;这些数字存在数组 nums 中。 现在要求你戳破所有的气球。如果你戳破气球 i &#xff0c;就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻…

碳钢腐蚀速率计算公式_镁合金轮毂螺栓连接的电偶腐蚀行为

环境污染和能源短缺促使日益发达的汽车工业大力推进构件轻量化&#xff0c;镁合金是最轻的结构材料之一&#xff0c;构件采用镁合金制造可以在减重的同时不降低结构强度&#xff0c;受到汽车工业的青睐。轮毂作为汽车的主要组成部件&#xff0c;其轻量化是汽车节能减排的有效途…

第七周总结

2019第七周作业 本周作业头 这个作业属于那个课程C语言程序设计II这个作业要求在哪里https://edu.cnblogs.com/campus/zswxy/computer-scienceclass1-2018/homework/2939我在这个课程的目标是理解指针数组和地址之前的关系及应用这个作业在那个具体方面帮助我实现目标practice参…

python大纲图_Python课程大纲

课程大纲被分成6个部分&#xff0c;每个部分又被分解为多个阶段&#xff0c; 而每个阶段包含了多个Try, Workshop, FactToFace, Apply. 这里只列出部分&#xff0c;和阶段&#xff1a;CHAPTER 0 : 预科[可选]Linux使用&#xff0c;常用CMD&#xff0c;服务配置&#xff0c;IDE&…

如何使用Google Authenticator在ASP.NET Core中设置两因素身份验证

介绍 (Introduction) In this article, we are going to learn how to perform two-factor authentication in an ASP.NET Core application using the Google Authenticator app.在本文中&#xff0c;我们将学习如何使用Google Authenticator应用程序在ASP.NET Core应用程序中…

280. Wiggle Sort

最后更新 二刷 这个题做得真蠢。上来想的复杂了&#xff0c;想的是quick sort之类的&#xff0c;然后一个一个交换。 实际上直接交换就行。。没啥特别的。 回头看一刷也是同样的思考过程 宿命论啊。。 Time: O(n) Space: O(1) public class Solution {public void wiggleSort(i…