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

【数据结构】子串、前缀

  1. 子串 (Substring)

    • 字符串中连续的一段字符序列,例如 "abc" 是 "abcd" 的子串。

    • 特点必须连续,顺序不可改变

  2. 子序列 (Subsequence)

    • 字符串中不连续但保持顺序的字符序列,例如 "acd" 是 "abcd" 的子序列。

  3. 前缀 (Prefix)

    • 字符串开头的子串,例如 "a""ab""abc" 都是 "abcde" 的前缀。

  4. 后缀 (Suffix)

    • 字符串结尾的子串,例如 "e""de""cde" 是 "abcde" 的后缀。

KMP 前缀函数(计算 next 数组)
#include <stdlib.h>
#include <string.h>int* compute_prefix_function(const char* pattern) {int n = strlen(pattern);int* next = (int*)malloc(n * sizeof(int));if (next == NULL) return NULL;int j = 0;next[0] = 0;for (int i = 1; i < n; i++) {while (j > 0 && pattern[i] != pattern[j]) {j = next[j - 1];}if (pattern[i] == pattern[j]) {j++;}next[i] = j;}return next; // 调用者需自行 free 释放内存
}// 示例用法:
// const char* pattern = "ababaca";
// int* next = compute_prefix_function(pattern);
// free(next);
滑动窗口(最长无重复子串)
int longest_unique_substring(const char* s) {int max_len = 0;int left = 0;int char_map[256]; // 假设字符为 ASCII 码memset(char_map, -1, sizeof(char_map)); // 初始化所有字符位置为 -1for (int right = 0; s[right] != '\0'; right++) {char c = s[right];if (char_map[c] >= left) {left = char_map[c] + 1;}char_map[c] = right;int current_len = right - left + 1;if (current_len > max_len) {max_len = current_len;}}return max_len;
}// 示例用法:
// const char* s = "abcabcbb";
// int result = longest_unique_substring(s);

相关文章:

  • QT Creator配置Kit
  • Windows系统Jenkins企业级实战
  • 大模型Embedding模型介绍与使用
  • 【生命周期分析(Life Cycle Assessment: LCA)】基于OpenLCA、GREET、R语言的生命周期评价方法、模型构建及典型案例应用
  • Redisson 看门狗机制
  • 【大数据技术-HBase-关于Hmaster、RegionServer、Region等组件功能和读写流程总结】
  • 第五天 车载系统安全(入侵检测、OTA安全) 数据加密(TLS/SSL、国密算法)
  • Taccel:一个高性能的GPU加速视触觉机器人模拟平台
  • 用纯HTML和CSS仿写知乎登录页面
  • 图像卷积初识
  • 操作系统实验习题解析 上篇
  • 中国古代史1
  • 关于ffmpeg的简介和使用总结
  • django的权限角色管理(RBAC)
  • 单片机-STM32部分:10-1、485
  • TIME - MoE 模型代码 3.4——Time-MoE-main/time_moe/models/modeling_time_moe.py
  • 【并发编程】基于 Redis 手写分布式锁
  • 鸿蒙系统使用ArkTS开发语言支持身份证阅读器、社保卡读卡器等调用二次开发SDK
  • VBA将PDF文档内容逐行写入Excel
  • OpenLayers根据任意数量控制点绘制贝塞尔曲线
  • 一生要出片的年轻人,买爆相机
  • 外交部发言人就印巴局势升级答记者问
  • 被取消总统候选人资格,金文洙:将采取政治法律措施讨回公道
  • 上海第四批土拍成交额97亿元:杨浦宅地成交楼板单价半年涨近7000元
  • 新华时评:直播间里“家人”成“韭菜”,得好好管!
  • 本科生已发14篇SCI论文被指由其教授父亲挂名,重庆大学成立工作组核实