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

392. Is Subsequence

题目描述

要通过这道题很容易,双指针法即可解决。进阶的问题很有意思。

class Solution {
public:bool isSubsequence(string s, string t) {int len_s = s.size();int len_t = t.size();int j = 0;for(int i = 0;j < len_s && i < len_t;i++){if(s[j] == t[i]){j++;}}return j==len_s;}
};

如果对大量的s字符串都按照上面的方法处理,显然是低效的。在t中查找下一个字符的操作耗费大量时间,每个新的s都要做这个重复的工作,这个事情本身只和t字符串自身的性质以及字符集有关,和s字符串无关。可以对t预处理,求出下一个字符的位置,每次只需要查询这个表即可。

具体看代码:

class Solution {
public:bool isSubsequence(string s, string t) {int len_t = t.size();//dp[i][j],0<=i<=len_t,0=<j<=25//dp[i][j]表示字符串t中从位置i开始往后字符j第一次出现的位置//如果dp[i][j]==len_t表示t中从位置i开始往后不存在字符j,因为t没有位置len_tvector<vector<int>> dp(len_t+1,vector<int>(26,len_t));//初始化只需要将dp[len_t][j] 0<=j<26 全部初始化为len_t就可以,表示字符串t末尾的后面没有字符//其他初始状态可以为任何值,可以不初始化//由于前面定义dp的时候已经把整个dp数组初始化为len_t,所以下面这两行可以省略// for(int j =0;j <26;j++)//     dp[len_t][j] = len_t;for(int i = len_t-1;i >=0;i--){//i必须从大到小遍历// for(int j = 0;j <26;j++){//j从大到小或者从小到大遍历都可以for(int j = 25;j>=0;j--){  //j从大到小或者从小到大遍历都可以if(t[i]-'a' == j){dp[i][j] = i;}else{dp[i][j] = dp[i+1][j];}}}int len_s = s.size();int i = 0;for(int k = 0;k < len_s;k++){if(dp[i][ s[k]-'a' ] == len_t)return false;else{i = dp[i][ s[k]-'a' ];i++;}}return true;}
};
http://www.xdnf.cn/news/496423.html

相关文章:

  • 天拓四方锂电池卷绕机 PLC 物联网解决方案
  • 从零开始认识 Node.js:异步非阻塞的魅力
  • Go语言 GORM框架 使用指南
  • c/c++的opencv模糊
  • exit耗时高
  • PYTHON训练营DAY28
  • AMD Vivado™ 设计套件生成加密比特流和加密密钥
  • 【React中虚拟DOM与Diff算法详解】
  • 免费商用字体下载
  • STM32IIC协议基础及Cube配置
  • 创建react工程并集成tailwindcss
  • C++(20): 文件输入输出库 —— <fstream>
  • Pytorch实现常用代码笔记
  • 从代码学习深度学习 - 词嵌入(word2vec)PyTorch版
  • 05、基础入门-SpringBoot-HelloWorld
  • 页面上如何显示特殊字符、Unicode字符?
  • 【001】RenPy打包安卓apk 流程源码级别分析
  • ProfibusDP主站转modbusTCP网关与ABB电机保护器数据交互
  • LangGraph(四)——加入人机交互控制
  • history模式:让URL更美观
  • 26、思维链Chain-of-Thought(CoT)论文笔记
  • 机器学习-人与机器生数据的区分模型测试-数据处理1
  • [Mac] 开发环境部署工具ServBay 1.12.2
  • upload-labs通关笔记-第10关 文件上传之点多重过滤(空格点绕过)
  • 开源RTOS(实时操作系统):nuttx 编译
  • JDBC实现模糊、动态与分页查询的详解
  • C++ deque双端队列、deque对象创建、deque赋值操作
  • 「Mac畅玩AIGC与多模态41」开发篇36 - 用 ArkTS 构建聚合搜索前端页面
  • Java 方法向 Redis 里操作字符串有什么需要注意的?​
  • OpenWebUI新突破,MCPO框架解锁MCP工具新玩法