C语言朴素算法

#include <stdio.h>
#include <string.h>// 朴素算法,用于字符串匹配
void naiveMatch(char* text, char* pattern) {int textLength = strlen(text);              // 计算文本串长度int patternLength = strlen(pattern);        // 计算模式串长度for (int i = 0; i <= textLength - patternLength; i++) {    // 外层循环控制文本串的起始位置int j;for (j = 0; j < patternLength; j++) {     // 内层循环用于比较文本串和模式串的字符if (text[i + j] != pattern[j]) {      // 如果任何字符不匹配,则内层循环中断break;}}if (j == patternLength) {                 // 如果内层循环成功执行完毕,则找到匹配printf("在位置 %d 处找到匹配\n", i);}}
}int main() {char text[] = "ABABDABACDABABCABAB";char pattern[] = "ABABCABAB";naiveMatch(text, pattern);       // 使用朴素算法进行字符串匹配return 0;
}

朴素算法是一种最简单直观的字符串匹配算法,其时间复杂度为O(m*n),其中m为模式串的长度,n为文本串的长度。在最坏情况下,朴素算法需要进行大量的不必要比较,效率较低。

在上述代码中,我们使用了两个指针ij分别表示文本串和模式串的索引,通过嵌套循环进行匹配的过程。外层循环控制文本串的起始位置,内层循环用于比较文本串和模式串的字符。如果任何字符不匹配,则内层循环中断,并将文本串的指针向后移动一位,重新开始下一轮匹配。如果内层循环成功执行完毕,即完整匹配了模式串中的所有字符,则说明在文本串中找到了匹配,并打印匹配的位置。外层循环继续,直到遍历完整个文本串。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/591684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XAMPP for Windows 8.0.30, 8.1.25 8.2.12

8.0.30 / PHP 8.0.30Whats Included? md5sha1Download (64 bit)144 Mb8.1.25 / PHP 8.1.25Whats Included? md5sha1Download (64 bit)148 Mb8.2.12 / PHP 8.2.12Whats Included? md5sha1Download (64 bit)149 Mb

单挑力扣(LeetCode)SQL题:180. 连续出现的数字(难度:中等)

题目&#xff1a;180. 连续出现的数字 &#xff08;通过次数124,862 | 提交次数258,838&#xff0c;通过率48.24%&#xff09; 表&#xff1a;Logs ---------------------- | Column Name | Type | ---------------------- | id | int | | num | var…

linux 的直接direct io

目录 什么是 Direct IO java 支持 使用场景 数据库 反思 在之前的文章零拷贝基础上&#xff0c;有一个针对那些不需要在操作系统的 page cache 里保存的情况&#xff0c;即绕过 page cache&#xff0c;对于 linux 提供了 direct io 的功能。 https://blog.csdn.net/zlpzl…

面试高频算法专题:数组的双指针思想及应用(算法村第三关白银挑战)

所谓的双指针其实就是两个变量&#xff0c;不一定真的是指针。 快慢指针&#xff1a;一起向前走对撞指针、相向指针&#xff1a;从两头向中间走背向指针&#xff1a;从中间向两头走 移除值为val的元素 题目描述 27. 移除元素 - 力扣&#xff08;LeetCode&#xff09; 给你…

常见负载均衡方案分析

负载均衡是分布式系统设计中的一个核心概念&#xff0c;它能够帮助系统合理分配负载&#xff0c;提高资源利用率&#xff0c;提升系统的伸缩性和可用性。以下是一些常见的负载均衡策略及其应用场景、优缺点&#xff1a; 1. 轮询&#xff08;Round Robin&#xff09; 应用场景…

RobotFrameWork自动化测试框架如何搭建环境?

前言 Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性&#xff0c;支持关键字驱动&#xff0c;可以同时测试多种类型的客户端或者接口&#xff0c;可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发&#xff08;ATDD&#xff…

一篇文章掌握系统架构的演变和常见微服务框架

目录 前言 一、系统架构的演变 1、单体应用架构 优点&#xff1a; 缺点&#xff1a; 2、垂直应用架构 优点&#xff1a; 缺点&#xff1a; 3、分布式SOA架构 3.1 什么是SOA 3.2 SOA架构 优点&#xff1a; 缺点&#xff1a; 4、微服务架构 优点&#xff1a; 缺点…

2024年01月数据库流行度最新排名

点击查看最新数据库流行度最新排名&#xff08;每月更新&#xff09; 2024年01月数据库流行度最新排名 TOP DB顶级数据库索引是通过分析在谷歌上搜索数据库名称的频率来创建的 一个数据库被搜索的次数越多&#xff0c;这个数据库就被认为越受欢迎。这是一个领先指标。原始数…

《Linux系列》Linux磁盘MBR分区扩容

文章目录 Linux磁盘MBR分区扩容1.前言2.控制台磁盘扩容3.分区扩容3.1 fdisk3.2 lsblk3.3 扩容分区 4.扩容文件系统4.1 df4.2 扩容文件系统 Linux磁盘MBR分区扩容 1&#xff09;参考阿里云扩容分区文档&#xff0c;整理MBR分区扩容 2&#xff09;本文档适用于MBR分区(fdisk -lu查…

springboot 双数据源配置

1:pom <!--SpringBoot启动依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</group…

CISSP 第1章:实现安全治理的原则和策略

作者&#xff1a;nothinghappend 链接&#xff1a;https://zhuanlan.zhihu.com/p/669881930 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 CIA CIA 三性&#xff1a; 机密性&#xff1a;和数据泄露有关。完整性…

freeCodeCamp:编程学习之旅的起点

一、产品介绍 freeCodeCamp是一个提供免费编程课程的学习平台。它包含了数百个编程挑战&#xff0c;覆盖了从基础的HTML、CSS和JavaScript到高级的算法和数据结构等各个方面的知识。freeCodeCamp不仅提供了丰富的学习资源&#xff0c;还帮助我通过实践提高编程技能。 二、应用…

中科2023

1、检材一硬盘的MD5值为多少?(1分) 80518BC0DBF3315F806E9EDF7EE13C12 2、检材一bitlocker的恢复密钥是多少?(5分) 看了一下不解密寸步难行,必须解密。18中科一样的,老题目一样出 感觉这个有点慢,下面看到潘姐的1小时。 然后我自己的 我自己的,1小时18分钟终于是恢…

韩版传奇 2 源码分析与 Unity 重制(三)客户端渲染管线

专题介绍 该专题将会分析 LOMCN 基于韩版传奇 2,使用 .NET 重写的传奇源码(服务端 + 客户端),分析数据交互、状态管理和客户端渲染等技术,此外笔者还会分享将客户端部分移植到 Unity 和服务端用现代编程语言重写的全过程。 概览 在这一篇文章中,我们将开始分析传奇客户…

go语言``反引号用法归纳——多行输出和Tag标签(指定json名称、MySQL名称))

一、多行输出 示例 func main() {str1 : 反引号多行字符串str2 : "双引号" " 多行" " 字符串"//str3 : 单引号" //" 多行" //" 字符串str4 : "双引号\n" " 多行\n" &quo…

C#上位机与欧姆龙PLC的通信08----开发自己的通讯库读写数据

1、介绍 前面已经完成了7项工作&#xff1a; C#上位机与欧姆龙PLC的通信01----项目背景-CSDN博客 C#上位机与欧姆龙PLC的通信02----搭建仿真环境-CSDN博客 C#上位机与欧姆龙PLC的通信03----创建项目工程-CSDN博客 C#上位机与欧姆龙PLC的通信04---- 欧姆龙plc的存储区 C#上…

注册 Mongodb 官网个人账号

上文 Mongodb基础介绍与应用场景我们简单说了一下 Mongodb 的场景 那么 我们先在他的官网创建一个个人账号 我们先访问官网 https://www.mongodb.com/zh-cn 这里 我们需要注册一下 这里 我们按要求填写信息 然后 点击下面创建账户 然后 点击下面创建账户 然后 他会要求我们邮…

Spring Boot 3 集成 Jasypt详解

随着信息安全的日益受到重视&#xff0c;加密敏感数据在应用程序中变得越来越重要。Jasypt&#xff08;Java Simplified Encryption&#xff09;作为一个简化Java应用程序中数据加密的工具&#xff0c;为开发者提供了一种便捷而灵活的加密解决方案。本文将深入解析Jasypt的工作…

常用环境部署(十三)——GitLab整体备份及迁移

一、GitLab备份 注意&#xff1a;由于我的GitLab是docker安装的&#xff0c;所以我的操作都是在容器内操作的&#xff0c;大家如果不是用docker安装的则直接执行命令就行。 1、Docker安装GitLab 链接&#xff1a;常用环境部署(八)——Docker安装GitLab-CSDN博客 2、GitLab备…

复试 || 就业day07(2024.01.02)算法篇

文章目录 前言数组的度最短补全词宝石与石头唯一摩尔斯密码词最常见的单词 前言 &#x1f4ab;你好&#xff0c;我是辰chen&#xff0c;本文旨在准备考研复试或就业 &#x1f4ab;文章题目大多来自于 leetcode&#xff0c;当然也可能来自洛谷或其他刷题平台 &#x1f4ab;欢迎大…