新闻详情

新闻详情

首页 / 资讯中心 / 详情

Kimi LeetCode 3303. 第一个几乎相等子字符串的下标 C语言实现

发布时间:2026/9/21 9:45:47来源:尧图网络
Kimi    LeetCode 3303. 第一个几乎相等子字符串的下标 C语言实现
以下是 LeetCode 3303 的 C 语言实现使用 Z-FunctionZ 数组 算法c#include string.h// 计算 Z-Function 数组// z[i] 表示 s[i..n) 与 s[0..n) 的最长公共前缀长度static void zFunction(const char *s, int n, int *z) {int l 0, r 0;z[0] 0;for (int i 1; i n; i) {if (i r) {z[i] (r - i z[i - l]) ? r - i : z[i - l];} else {z[i] 0;}while (i z[i] n s[z[i]] s[i z[i]]) {z[i];}if (i z[i] r) {l i;r i z[i];}}}int minStartingIndex(char *s, char *pattern) {int n strlen(s);int m strlen(pattern);// 正向匹配pattern sint len1 m n;char *str1 (char *)malloc((len1 1) * sizeof(char));strcpy(str1, pattern);strcpy(str1 m, s);int *z1 (int *)malloc(len1 * sizeof(int));zFunction(str1, len1, z1);// 反向匹配reverse(pattern) reverse(s)int len2 m n;char *str2 (char *)malloc((len2 1) * sizeof(char));// 反转 patternfor (int i 0; i m; i) {str2[i] pattern[m - 1 - i];}// 反转 sfor (int i 0; i n; i) {str2[m i] s[n - 1 - i];}str2[len2] \0;int *z2 (int *)malloc(len2 * sizeof(int));zFunction(str2, len2, z2);int result -1;// 枚举每个可能的起始位置 ifor (int i 0; i n - m; i) {// z1[m i]从 s[i] 开始正向匹配 pattern 的最长前缀长度// z2[n - i]从 s[i] 末尾反向匹配 pattern 的最长后缀长度// 两者之和 m - 1 说明中间最多只有 1 个字符不匹配if (z1[m i] z2[n - i] m - 1) {result i;break;}}free(str1);free(z1);free(str2);free(z2);return result;}关键点要点 说明malloc free C 中需手动管理内存计算完 Z 数组后及时释放字符串拼接 用 strcpy 将 pattern 和 s 拼接到新分配的缓冲区反向构造 分别反转 pattern 和 s 后拼接避免多次调用 strrevz1[m i] z2[n - i] 正向前缀 反向后缀覆盖 m-1 个字符即汉明距离 ≤ 1复杂度- 时间复杂度O(n m)两次 Z-Function 均为线性遍历- 空间复杂度O(n m)两个拼接字符串和两个 Z 数组与 Java 版本的区别C 语言没有内置字符串反转和动态数组需要手动1. malloc 分配拼接字符串的内存2. 循环反转字符构造反向字符串3. 手动 free 释放所有动态分配的内存核心算法逻辑Z-Function 双数组匹配与 Java/其他语言完全一致。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Fuzz 测试完整指南(模糊测试实战手册) 2026/9/18 5:14:50

Fuzz 测试完整指南(模糊测试实战手册)

目录 一、Fuzz 测试基础概念 1. 什么是 Fuzz(模糊测试) 2. 适用场景 3. Fuzz 能测出哪些漏洞 4. Fuzz 分类 二、主流 Fuzz 工具选型 1. 源码级(C/C 首选) 2. 无源码 / 网络协议 3. 高级语言专用 4. 内核 / 固件专用 三、…

阅读更多 →
Python 数据验证库 Validators 2026/9/21 10:21:53

Python 数据验证库 Validators

在日常编程中,数据验证是一个绕不开的话题。无论是用户注册信息的校验、API接口参数的检查,还是数据清洗过程中的格式验证,我们都需要确保数据的准确性和规范性。传统的数据验证方法往往需要编写大量的正则表达式和条件判断,既繁琐…

阅读更多 →
emmet-mode编辑点导航:高效在标签间跳转的技巧 2026/9/18 12:18:18

emmet-mode编辑点导航:高效在标签间跳转的技巧

emmet-mode编辑点导航:高效在标签间跳转的技巧 【免费下载链接】emmet-mode emmets support for emacs. 项目地址: https://gitcode.com/gh_mirrors/em/emmet-mode emmet-mode是一款为Emacs用户提供Emmet支持的插件,能够帮助开发者通过简洁的缩写…

阅读更多 →
计算机视觉技术革新足球分析:sports项目如何解决实时体育分析的核心挑战 2026/9/20 9:26:44

计算机视觉技术革新足球分析:sports项目如何解决实时体育分析的核心挑战

计算机视觉技术革新足球分析:sports项目如何解决实时体育分析的核心挑战 【免费下载链接】sports computer vision and sports 项目地址: https://gitcode.com/gh_mirrors/sp/sports 在体育竞技的世界里,每一厘米的位移和每一秒的时间都至关重要。…

阅读更多 →
Llama-3.1-8B-Instruct-FP8-KV-Quark-test微调指南:在量化模型上继续训练 2026/9/18 21:01:59

Llama-3.1-8B-Instruct-FP8-KV-Quark-test微调指南:在量化模型上继续训练

Llama-3.1-8B-Instruct-FP8-KV-Quark-test微调指南:在量化模型上继续训练 【免费下载链接】Llama-3.1-8B-Instruct-FP8-KV-Quark-test 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Llama-3.1-8B-Instruct-FP8-KV-Quark-test Llama-3.1-8B-Instruct-FP…

阅读更多 →
OpenClaw接入阿里云百炼API踩坑指南:404、环境变量与模型路由 2026/9/18 21:05:26

OpenClaw接入阿里云百炼API踩坑指南:404、环境变量与模型路由

1. 项目概述:OpenClaw 接入阿里云百炼 API 的真实踩坑全记录 我用 OpenClaw 搭建本地大模型服务已经快一年了,从最早用它跑 Qwen-Coder 做代码补全,到后来想切到 Qwen3-Max 做复杂推理,中间整整卡了四天半。不是环境装不上&#…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞