含通配符‘?’的字符串的匹配

算法编程题:通配符匹配 本文首发于我的公众号码农之屋(id:Spider1818),专注于干货分享,包含但不限于Java编程、网络技术、Linux内核及实操、容器技术等。欢迎大家关注,二维码文末可以扫。 题目描述: 给定一个字符串(s) 和一个字符模式(p) ,实现一个支持'?'和'*'的通配符匹配。 '?' 可以匹配任何单个字符。 '*' 可以匹配任意字符串(包括空字符串)。 两个字符串完全匹... 阅读详情

编写一个程序,执行汉通配符‘?’的字符串的匹配,该通配符可以与任一个字符匹配成功。
分析:从头开始扫描字符串string的每个字符,在当前字符等于字串的字符或者字串的当前比较的字符是‘?’时,字串指针向前推进,当子串指针为‘\0’时比较完毕并返回对应位置;否则重新从string串的当前位置与子串进行比较。当未找到匹配的且string结束时,返回-0

#include<iostream.h>
int pattern_index(char *subString ,char *string);

int main(){
    char *string ,*subString;
    int same ;
    subString  = "???gram";//能通过输入赋值?
    string = "this program return index of substring ";
    same = pattern_index(subString,string);
    if(same)
        cout<<"字串起始位置:"<<same<<endl;
    else
        cout<<"匹配失败!"<<endl;
    return 0;
}
int pattern_index(char *subString ,char *string){
    int i,j,k;

    for(i = 0;string[i];i++){
        for(j=i,k=0;(string[j]==subString[k])||(subString[k]=='?');j++,k++){
            if(!subString[k+1])
                return i;
        }
    }
    return 0;
}
含通配符的字符串查找最优匹配位置问题解析 在字符串处理领域,涉及通配符的字符串匹配问题是一个经典且具有挑战性的课题。本文围绕给定字符串s和包含与?通配符的模式串p,深入探讨如何找出模式串在字符串中所有可能的匹配位置,并且要求匹配结果是最长的可能匹配。我们将详细分析问题、设计算法、实现代码,并对算法复杂度进行分析,同时探讨该问题在实际场景中的应用。给定一个字符串s和一个模式串p,模式串p中包含和?两种通配符。我们需要找出模式串p在字符串s中所有可能的匹配位置,并且要求这些匹配是最长的可能匹配。例如,对于字符串和模式串p = "a*c" 阅读详情

相关推荐

简单的字符串模式匹配

题目: 在正则表达式中有通配符,如“*”可以匹配0个到多个字符,而“?”可以匹配任意一个字符。现在要求给出一段代码,判断一个包含通配符“*”和“?”的字符串是否与指定的字符串完全匹配。 解析: 这个也就不多说了,直接给代码好了。 #include #include using namespace std; bool match(const char* src, const cha

不会?学啊! 1221

带通配符的字符串匹配

题目背景 通配符是一类键盘字符,当我们不知道真正字符或者不想键入完整名字时,常常使用通配符代替一个或多个真正字符。通配符有问号(?)和星号(*)等,其中,“?”可以代替一个字符,而“*”可以代替零个或多个字符。 现又定义一个通配符“@”,规定在一个字符串中,“@”代替的字符个数是固定的。 题目描述 用户在使用“@”时,当然希望输入的“@”越少越好。现在给出一个带有“?”“*

zhagoodwell查的博客 2155

具有通配符?的模式匹配算法(BF)

【问题描述】 编写一个具有通配符?的模式匹配算法。?可以与任意一个字符匹配。 【输入形式】 输入主串s; 输入子串t; 输入比较起始位置pos。 【输出形式】 输出匹配结果:子串第一次出现的位置,若未找到,输出0。

AIGC 1116

vscode常用正则表达式搜索(跨行搜索包含的特定字符串)

注意事项:在VSCode中使用时,要先把通配符开关打开(开关是查找输入框右边的".*"符号) 转义字符 匹配内容 \t tab \r 回车符号\r \n 换行符号\n \ 特殊符号转义,如"*" ,转义后匹配的是字符"*", “(” 匹配的是括号"(" [字符序列] 匹配[ ]中的任意字符,如[ae],字符a和字符e均匹配 [^字符序列] 匹配不在[ ]中的任意字符,如[^ae]除了a和e,其他字符都匹配 [字符1-字符2] 匹配在[ ]之间的任意字符,如[a-x],

咖啡味的小认真 4万+

带通配符的字符串匹配算法

带通配符的字符串匹配算法,带通配符的字符串匹配算法

支持通配符的模式匹配算法

支持通配符?、*的模式匹配算法,模式串中支持通配符?和*,其中,?代表一个任意字符,*代表0个或多个任意字符。模式串中可以多次出现通配符?和*。 输出模式串在主串中出现的所有位置。

字符串匹配算法,包含通配符"*"、"?"的匹配

<br />/* */function: * 字符串匹配算法,包含通配符"*"、"?"的匹配 * */params * 1.srtT: 目标字符串 * 2.strP: 待匹配字符串 * */return * strP匹配strT,返回true; 否则返回false.*/ bool IsStringMatch(const string& strT, const string& strP, int start = 0, int end = 0) { size_t i = 0;

Nicholas的专栏 QQ1295794532 1316

TVS 和压敏电阻联合使用进行浪涌保护时,压敏电阻的压敏电压要低于TVS 的钳位电压 VC。

通过先让MOV接管,可以确保在大多数情况下,电压不会迅速上升到TVS二极管的钳位电压,从而保护TVS二极管免受持续高能量冲击的损害。总结来说,将MOV的压敏电压设置得低于TVS二极管的钳位电压,可以提供一种分级的保护机制,优化浪涌保护性能,同时保护敏感的TVS二极管不被过度的能量冲击损坏,并延长其使用寿命。MOV吸收的能量(Wmov):假设浪涌电流为10kA,MOV导通后将电压限制在300V,那么Wmov = Ipp * Vmov = 10kA * 300V = 3MW。例如,Vmov可以设定为275V。

weixin_66642980的博客 2248

java 实现含通配符的字符串匹配

算法目标,对于 字符串 abcd1dd2deeedd9 能偶匹配到字符串 abc*dd?;*代表任意个数的字符串,?代表一个字符. 分两步走, 第一步实现含?而不含*的 字符串匹配,如对dd?的匹配  第二步,实现含有* 的字符串的匹配,如abc* dd?,主要思路是用* split 字符串,分为两个有效的串,abc, dd? 然后使用步骤一种的方法来查看匹配到的index.    ...

北京的杨过 5629

Weblogic安装与部署

27.免密登录,在目录Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\servers\AdminServer和Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\servers\Server-TA目录下,新建security\boot.properties文件,13.点击新建按钮,填写服务器名称,服务器监听地址,再点击下一步,最后点击完成。

m0_46259466的博客 6635

从动态规划到最优控制:Hamilton-Jacobi-Bellman (HJB) 方程的核心思想与应用

本文深入解析了Hamilton-Jacobi-Bellman (HJB) 方程的核心思想与应用,从动态规划到最优控制的演变过程。通过实际案例展示了HJB方程在机器人路径规划、工业机械臂优化等领域的实践价值,并探讨了数值求解方法和深度学习结合的神经HJB前沿进展。

weixin_28700411的博客 458

含通配符的字符串匹配问题

题目: 给定两个字符串,求字符串2,在字符串1中的最先匹配结果。字符串2中 可以存在’*’符号,且该符号可以代表任意字符,即字符串2中存在通配符。 例如:输入:abcdefghabef,a*f 输出:abcdef#include<iostream>

fuliguo的博客 2434

《炬丰科技-半导体工艺》用于半导体的RCA清洁技术

书籍:《炬丰科技-半导体工艺》 文章:用于半导体的RCA清洁技术 编号:JFKJ-21-1073 引言 RCA清洗技术是用于清洗硅晶圆等的技术,由于其高可靠性,30多年来一直被用于半导体和平板显示器(FPD)领域的清洗。其基础是以除去颗粒为目的的氨水-过氧化氢溶液组成的SC―1洗涤和以除去金属杂质为目的的盐酸-过氧化氢溶液组成的SC―2洗涤相结合的洗涤技术。SC-1洗涤的机理说明如下。首先,用过氧化氢氧化硅晶片的表面,用作为碱的氨蚀刻氧化硅,并通过剥离去除各种颗粒。此外,如图1所示,在pH 10.5附近的S

jfkj2021的博客 769

poj 2973 无序字符串含通配符的匹配

题意: 求两个字符串无序含通配符的

sepNINE的专栏 1111

【产品经理修炼之道】-如何搭建企业级账务系统?

笔者公司的业务模式具有一定的独特性,不同于我们常见的市面上供应链类公司的进销存模式。公司主要为各大银行和金融机构提供信贷领域的风控服务,客户主要通过请求公司的数据产品接口产生费用,可以简单地理解为请求一次接口收费0.5元,一个月若是有1w人请求同一个接口则公司需要收费5000元。

xiaoli8748的专栏 5408

044、镜头脏污与异物检测:产线 AOI 检测方案与 ISP 脏污补偿

文章摘要(148字) 本文针对镜头生产中的脏污检测问题,提出产线AOI检测与ISP补偿结合的解决方案。产线端采用明场、暗场、偏振三通道联合检测技术,将油污漏检率从8.3%降至0.2%。ISP端通过RAW域局部梯度分析和频域补偿算法,动态修复产线漏检的微小脏污。作者结合实战案例,详细分析了传统灰度阈值法的局限性,并给出多模态检测的代码实现要点,强调必须建立"产线拦截+终端补偿"的双重防护机制。

sundong_81的博客 230

Two strings(字符串匹配,含通配符)

题目:https://acm.hdu.edu.cn/showproblem.php?pid=6170 Giving two strings and you should judge if they are matched. The first string contains lowercase letters and uppercase letters. The second string contains lowercase letters, uppercase letters, and special

he_qingjun的博客 555

海洋捕食者算法(MPA)详解:从海洋生态智慧到高性能优化

摘要: 海洋捕食者算法(MPA)是一种基于海洋生态觅食行为的元启发式优化算法,模拟捕食者(如鲨鱼)的布朗运动和莱维飞行策略进行全局与局部搜索。算法分为三阶段:高速比阶段(全局探索)、单位速度比阶段(平衡搜索)和低速比阶段(局部开发),通过精英矩阵和FADs效应(概率扰动)避免早熟收敛。MPA具有参数少、收敛快、寻优能力强等特点,适用于复杂优化问题,其数学模型将生物行为转化为随机游走与自适应策略,并通过收敛因子动态调整探索-开发平衡。实验表明,MPA在多个基准问题上表现优异。

qq_42212808的博客 274

C语言都含通配符字符串匹配例题,c语言实现字符串通配

1.题目描述问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。要求:实现如下2个通配符:*:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写。下同)?:匹配1个字符输入:通配符表达式;一组字符串。输出:返回匹配的结果,正确输出true,错误输出false2.源码实现#include #include #inc...

weixin_34877373的博客 748

【漏洞复现】永恒之蓝 MS17-010 远程溢出漏洞(CVE-2017-0143)

文章目录声明前言一、漏洞原理简述二、漏洞代码深层解析三、实验步骤四、漏洞补丁总结 声明 本篇文章仅用于技术研究与技术学习,切勿用于非授权下攻击行为,切记! 前言 Windows7 存在 MS17-010 永恒之蓝(远程溢出漏洞) ,该漏洞是方程式组织在其漏洞利用框架中一个针对SMB服务进行攻击的漏洞,该漏洞导致攻击者在目标系统上可以执行任意代码 一、漏洞原理简述 MS17-010漏洞出现在Windows SMB v1中的内核态函数 srv!SrvOs2FeaListToNt 在处理FEA(File Ex

李同學AI安全 9628

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【动态规划】44. 两个数组的 DP(含字符串数组):通配符匹配

【动态规划】44. 通配符匹配

小雷的算法 blog 499

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

动态规划 | 带有通配符的字符串匹配(浅显易懂)

带有通配符的字符串匹配一、Leetcode | 44 Wildcard Matching(只有一个字符串包含通配符)题目很简单,就是说两个字符串,一个含有通配符,去匹配另一个字符串;输出两个字符串是否一致。注意:’?’表示匹配任意一个字符,’*’表示匹配任意字符0或者多次首先,我们想到暴力破解。如果从头到尾的破解,到第二个字符时,是否匹配成功取决于第一个字符是否匹配成功! 所以我们想到应该要用到动态

亮子的专栏 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[转载]动态规划 | 带有通配符的字符串匹配(浅显易懂)

带有通配符的字符串匹配 一、Leetcode | 44 Wildcard Matching(只有一个字符串包含通配符) 题目很简单...

u013310037的博客 390

动态规划算法-两个数组的dp(含字符串数组):44.通配符匹配

动态规划算法-两个数组的dp(含字符串数组):44.通配符匹配解析

要努力去发光,而不是被照亮~ 247
上一篇: 十进制转其他进制通用代码
下一篇: 文章标题
jeffery0628
博客等级 码龄11年 39粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值