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

LeetCode 刷题【115. 不同的子序列】

115. 不同的子序列

自己做

解1:递归(超时)

class Solution {private int sum = 0;public void search(String s, int i, String t, int j){if(j == t.length()){                       //匹配上的情况sum++;return;}if(s.length() - i < t.length() - j)       //剪枝=》表示就算后面元素全部能匹配上t,但是最后t仍然不可能匹配完return;while(s.charAt(i) != t.charAt(j)){        //跳过不匹配的字符  i++;if(i == s.length())                   //越界了还没有找到->直接返回return;        }//遇到匹配的字符search(s, i + 1, t, j);                   //不选当前字符search(s, i + 1, t, j + 1);               //选当前字符}public int numDistinct(String s, String t) {search(s, 0, t, 0);return sum;}
}

解2:动态规划【歇菜】

看题解

官方题解:

class Solution {public int numDistinct(String s, String t) {int m = s.length(), n = t.length();if (m < n) {return 0;}int[][] dp = new int[m + 1][n + 1];for (int i = 0; i <= m; i++) {dp[i][n] = 1;}for (int i = m - 1; i >= 0; i--) {char sChar = s.charAt(i);for (int j = n - 1; j >= 0; j--) {char tChar = t.charAt(j);if (sChar == tChar) {dp[i][j] = dp[i + 1][j + 1] + dp[i + 1][j];} else {dp[i][j] = dp[i + 1][j];}}}return dp[0][0];}
}

优化自己的代码

class Solution {public int numDistinct(String s, String t) {int m = s.length();int n = t.length();int[][] DP = new int[m + 1][n + 1];//初始化for(int i = 0; i <= m; i++)      //初始化第一列【s必然匹配空的t】DP[i][0] = 1;for(int j = 1; j <= n; j++)      //初始化第一行【空的s必然不匹配不为空的t】DP[0][j] = 0;for(int i = 1; i <= m; i++)for(int j = 1; j <= n; j++)if(s.charAt(i - 1) == t.charAt(j - 1))DP[i][j] = DP[i - 1][j - 1] + DP[i - 1][j];elseDP[i][j] = DP[i - 1][j];return DP[m][n];}
}

http://www.dtcms.com/a/473595.html

相关文章:

  • 图像去雾之 Retinex 算法
  • 为什么 React 推荐 “不可变更新”:深入理解 React 的核心设计理念
  • 模型缝合的思想和步骤
  • 【基础算法】DFS中的剪枝与优化
  • 做暧昧视频网站做网页用什么软件写代码
  • Migo报错,可直接记账的提醒
  • 甘肃温室大棚建设网站佛山网页网站设计多少钱
  • js绑定事件的方法有几种?
  • P1003 [NOIP 2011 提高组] 铺地毯
  • 设置关闭宝塔面板依然运行java项目
  • Q:在 Vue.js 中,如何让【事件处理函数】同时接收【事件对象】和【自定义参数】?
  • 企业网站建设规划书pptwordpress改造mip
  • ASW层(应用层)设计与工作内容笔记
  • One Commander(文件管理器) 中文绿色版
  • 标签之超文本链接(本文为个人学习笔记,内容整理自哔哩哔哩UP主【非学者勿扰】的公开课程。 > 所有知识点归属原作者,仅作非商业用途分享)
  • 北京专业做网站怎么样灵璧做网站
  • 离线下载transformer
  • Wireshark过滤器语法详细指南及相关知识点
  • 把工艺内容做成向量数据库供llm调用
  • MIT 6.S081课程笔记0——关于课程
  • 前端梳理体系从常问问题去完善-网络篇
  • 常平网站wordpress精简优化
  • TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 使用Keras实现逻辑回归
  • 网站公司制作公司网站如何宣传推广
  • Tensorflow循环神经网络RNN
  • python如何控制鼠标移动到某坐标位置
  • 单片机中经常定义的结构体解读
  • 基于Jetson+GMSL AI相机的工业高动态视觉感知方案
  • 海口房地产网站建设新公司注册取名
  • WebSocket —— 在线聊天室