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

字符串--子串匹配

下面给出了子串匹配问题的模板,预处理结束后的代码根据题意编写

dp

预处理目的:得到26个字母在字符串t中首次出现的位置

数组元素表示从从位置 i 开始往后字符 j 第一次出现的位置

class Solution {
    public boolean isSubsequence(String s, String t) {
        int n = s.length(), m = t.length();

        int[][] f = new int[m + 1][26];
        for (int i = 0; i < 26; i++) {
            f[m][i] = m;
        }

        for (int i = m - 1; i >= 0; i--) {
            for (int j = 0; j < 26; j++) {
                if (t.charAt(i) == j + 'a')
                    f[i][j] = i;
                else
                    f[i][j] = f[i + 1][j];
            }
        }
//----------------------------预处理结束,现在26个字母在t的位置已经存进数组
        int add = 0;
        for (int i = 0; i < n; i++) {
//f中a是下标0,b是下标1……,所以s中取出的字母,想转化成f中对应的下标,要 - 'a'
            if (f[add][s.charAt(i) - 'a'] == m) {
                return false;
            }
            add = f[add][s.charAt(i) - 'a'] + 1;
        }
        return true;
    }
}

横坐标的每个点代表一个字母 

相关文章:

  • Linux进程状态
  • BUUCTF [BJDCTF2020]EasySearch1
  • Android Flow 示例
  • Flutter 学习之旅 之 flutter 使用 flutter_screenutil 简单进行屏幕适配
  • 【算法】837. 连通块中点的数量
  • 后端-Java虚拟机
  • STM32引脚类型
  • 1.计算机基础知识
  • Milvus向量数据库部署
  • ?算法1-4 小A点菜
  • 解决DeepSeek服务器繁忙
  • 20250303-代码笔记-class CVRPTester
  • 【现代深度学习技术】卷积神经网络03:填充和步幅
  • BUU43 [BJDCTF2020]The mystery of ip 1
  • 通配符匹配在Redis中的实现
  • 爬虫不“刑”教程
  • c++ cout详解
  • 探秘虚拟与现实的融合:VR、AR、MR 技术的变革力量
  • 清华大学AI赋能医药代表销售培训讲师专家培训师唐兴通Deepseek医药数字化营销大健康数字化转型医药新媒体营销
  • 云平台 | 玩转单细胞比率可视化
  • 美联储主席:不打算先发制人地降息,将继续观望
  • 央行、证监会:科技创新债券含公司债券、企业债券、非金融企业债务融资工具等
  • 长三角铁路五一假期发送旅客超2000万人次,同比增幅超一成
  • 默茨在德国联邦议院第一轮投票中未能当选总理
  • 恒瑞医药通过港交所上市聆讯,最快或5月挂牌上市
  • 贵州黔西市载人游船倾覆事故已致3人遇难,14人正在搜救中