动态规划-leetcode#97-交错字符串

2024-05-30 04:58

本文主要是介绍动态规划-leetcode#97-交错字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

class Solution {
public:bool isInterleave(string s1, string s2, string s3) {if(s1.length()+s2.length()!=s3.length()) return false;vector<vector<bool>> dp(s1.length()+1,vector<bool>(s2.length()+1,false));dp[0][0]=true;//s1空,s2空,可以组成s3空for(int i=0;i<=s1.length();i++){for(int j=0;j<=s2.length();j++){int id = i+j-1;if(i>=1 && s1[i-1]==s3[id] && dp[i-1][j]) dp[i][j]=true; if(j>=1 && s2[j-1]==s3[id]  && dp[i][j-1]) dp[i][j]=true; }}return dp[s1.length()][s2.length()];}
};

题意解析:s1和s2交错拼接,是否可以拼成s3,这里需要注意的是s1和s2必须是顺次访问的,不能跳着取字符去拼接,就是每次都要从剩余的字符串的头部还是取。举例aabcc和dbbca是否能拼成aadbbbaccc,dp[i][j] 表示s1的前i个与s2的前j个是否可以拼成s3的前i+j个,那么就有两种情况,要么最后一个字符来自s1,要么来自s2,如果s3的前i+j个字符的最后一个字符s3[i+j-1]来自s1,也就是s3[i+j-1]和s1[i-1]相等,那么只要dp[i-1][j]是true,dp[i][j]就是true;如果s3的前i+j个字符的最后一个字符s3[i+j-1]来自s2,也就是s3[i+j-1]和s2[j-1]相等,那么只要dp[i][j-1]是true,dp[i][j]就是true。

初始时候,s1=空串,s2=空串,组成的s3也是空串,dp[0][0]=true;这里的循环i和j表示的是前i个字符和前j个字符,当比较字符是否相等时,索引为i-1,j-1,i+j-1。

这篇关于动态规划-leetcode#97-交错字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1015631

相关文章

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

Java 字符串操作之contains 和 substring 方法最佳实践与常见问题

《Java字符串操作之contains和substring方法最佳实践与常见问题》本文给大家详细介绍Java字符串操作之contains和substring方法最佳实践与常见问题,本文结合实例... 目录一、contains 方法详解1. 方法定义与语法2. 底层实现原理3. 使用示例4. 注意事项二、su

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

Python 字符串裁切与提取全面且实用的解决方案

《Python字符串裁切与提取全面且实用的解决方案》本文梳理了Python字符串处理方法,涵盖基础切片、split/partition分割、正则匹配及结构化数据解析(如BeautifulSoup、j... 目录python 字符串裁切与提取的完整指南 基础切片方法1. 使用切片操作符[start:end]2

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎