当前位置: 首页 > news >正文

leetcode日记(84)交错字符串

很明显的动态规划,就是怎么用想了一段时间。(开始还怀疑过是不是双指针,发现不行,因为会出现s3的下一个字符同时能够匹配到两个字符串字符的情况)

然后就是构建数组dp[101][101],数组代表前x个s1字符和前y个s2字符是否与前x+y个s3是交错字符串。

不断递归就行了:

class Solution {
public:string s1,s2,s3;int dp[101][101];bool dg(int x,int y){if(s1.size()==x&&s2.size()==y){dp[x][y]=1;return 1;}if(dp[x][y]!=-1) return dp[x][y]==1;bool b=0;if(s1.size()>x&&s1[x]==s3[x+y]){b=b|dg(x+1,y);}if(s2.size()>y&&s2[y]==s3[x+y]){b=b|dg(x,y+1);}dp[x][y]=b;return b;}bool isInterleave(string s1, string s2, string s3) {if(s1.size()+s2.size()!=s3.size()) return 0;this->s1=s1;this->s2=s2;this->s3=s3;memset(dp,-1,sizeof(dp));dg(0,0);return dp[s1.size()][s2.size()]==1;}
};

学到了一点东西就是可以用-1、0、1三种状态分别代表未判断、不是交错字符串、是交错字符串,之前也用到过这种做法,可以降低复杂度。


http://www.mrgr.cn/news/93586.html

相关文章:

  • pyside6学习专栏(九):在PySide6中使用PySide6.QtCharts绘制6种不同的图表的示例代码
  • Docker 部署 Vaultwarden
  • π0及π0_fast的源码解析——一个模型控制7种机械臂:对开源VLA sota之π0源码的全面分析,含我司微调π0的部分实践
  • 【使用hexo模板创建个人博客网站】
  • 点云数据处理--splat转3dtiles
  • Vue23Web 基礎性拉滿的面試題(2025版)還沒更新完...
  • RSA的理解运用与Pycharm组装Cryptodome库
  • Networking Based ISAC Hardware Testbed and Performance Evaluation
  • vite:初学 p5.js demo 画圆圈
  • 大语言模型学习--向量数据库基础知识
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_init_cycle 函数
  • PyTorch中的线性变换:nn.Parameter VS nn.Linear
  • C#使用winform实现简单的梯形图指令编译和执行,带编译器和虚拟机代码
  • Wpf-ReactiveUI-Usercontrol与主界面交互
  • C语言实现贪吃蛇
  • 高考數學。。。
  • 200W数据需要去重,如何优化?
  • 20250306-笔记-精读class CVRPEnv:step(self, selected)
  • Flink深入浅出之03:状态、窗口、checkpoint、两阶段提交
  • FPGA学习篇——Verilog学习3(关键字+注释方法+程序基本框架)