当前位置: 首页 > 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医药数字化营销大健康数字化转型医药新媒体营销
  • 云平台 | 玩转单细胞比率可视化
  • 现在lol谁做教学视频网站/线上培训机构
  • 奉贤网站建设上海站霸/深圳全网营销平台排名
  • 杭州门户网站开发/网页设计模板
  • 微信小程序开发介绍/seo网站优化推荐
  • 贵阳汽车网站建设/今日nba比赛直播
  • 如果做网站/株洲seo推广