题目描述:
从字符串string开始完整匹配子串sub,返回匹配到的字符个数。

sub中如果出现’?‘表示可以匹配一到三个除’\0’以外的任意字符。
如果sub还有找不到匹配的字符,则说明不能完整匹配。

如果能完整匹配,返回匹配到的字符个数,如果有多种匹配方式,返回匹配字符数最少的那个,如果不能完整匹配,返回-1。
输入描述:
第一行输入字符串string,长度小于10000
第二行输入子串sub,长度小于100
输出描述:
从string开头位置完整匹配sub,匹配到的字符个数。注意这个开头

输入例子1:
abcdefg
a?c
输出例子1:
3

分析:
这个思路挺不好找的,思考了超过半个小时没有结果,因为考虑的太多了,想到了很多种情况,给想复杂了。最后还是参考了别人的代码才实现了。
注意到题中是从头开始匹配的,因此如果str[0]与substr[0]要是不相同的话,直接返回-1;
然后就是从第二个字符开始匹配,这个时候可能碰到的情况无非三种:substr[i]字符与str[i]相等或不相等或者substr[i]是字符’?’,然后分别给到相应的处理。

再写一遍代码:

#include<iostream>
using namespace std;int main()
{char str[10000], substr[100];cin>>str>>substr;int count = 1;if(str[0] != substr[0])cout<<-1;return 0;else{for(int i=1,j=1;substr[i] != '\0';){if(str[i] == substr[j]){count++;i++;j++;}else if(substr[i] == '?'){if(str[i+1] == substr[j+1]){count++;i++;}else if(str[i+2] == substr[j+1]){count = count+2;i=i+2;}else if(str[i+3] == substr[j+1]){count = count+3;i=i+3;}j++;}else if(str[i] != substr[j]){cout<<-1;return 0;}      }cout<<count;}    return 0;
}

深信服——字符串模糊匹配相关推荐

  1. python模糊查询_python实现字符串模糊匹配

    之前笔者写过一篇文章关于如何做搜索,但那篇文章的角度是从文本相似度角度写的.那种方式是目前发展的趋势,但是真正的搜索特别是网页搜索不可能在大范围的文本之间两两算相似度的.那样搜索引擎的效率会变得特别低 ...

  2. Python字符串模糊匹配库FuzzyWuzzy

    Python字符串模糊匹配库FuzzyWuzzy 在计算机科学中,字符串模糊匹配(fuzzy string matching)是一种近似地(而不是精确地)查找与模式匹配的字符串的技术.换句话说,字符串 ...

  3. JS实现字符串模糊匹配

    JS实现字符串模糊匹配 var str = "徐娜xuanchengwush数据uc是hulichang" var key = "徐娜数据g" // 模糊匹配 ...

  4. python字符串模糊匹配 - FuzzyWuzzy

    简介 字符串模糊匹配在很多问题中有实际价值.比如NER或任何词条关联问题,将不规范的词条与标准词条进行链接匹配.在数据量大或包含关系复杂时,使用优秀的工具包可极大提升效率. FuzzyWuzzy 既是 ...

  5. python字符串模糊匹配 - RapidFuzz

    简介 之前已介绍了字符串模糊匹配的应用以及FuzzyWuzzy包的使用.目前使用较多的是运行速度更快的RapidFuzz,从名字即可看出其特点.RapidFuzz是一个使用python和C++编写的字 ...

  6. python字符串模糊匹配_NLP教程:用Fuzzywuzzy进行字符串模糊匹配

    在计算机科学中,字符串模糊匹配( fuzzy string matching)是一种近似地(而不是精确地)查找与模式匹配的字符串的技术.换句话说,字符串模糊匹配是一种搜索,即使用户拼错单词或只输入部分 ...

  7. java 字符串模糊匹配_Java实现伪查询(全匹配+模糊匹配)

    Java实现伪查询(全匹配+模糊匹配) 在项目中一直习惯了框架下[springboot+mybatis]的增删改查,然后领导突然给了一个需求,让我先弄一些假数据出来,用于页面的展示,业务啥的也没说,咱 ...

  8. java 字符串模糊匹配

    java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现. Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创 ...

  9. FuzzyWuzzy:简单易用的字符串模糊匹配工具

    FuzzyWuzzy 是一个简单易用的模糊字符串匹配工具包.它依据Levenshtein Distance 算法计算两个序列之间的差异. Levenshtein Distance 算法,又叫 Edit ...

最新文章

  1. c语言c++语言中静态变量,函数详解
  2. 作文计算机使用有什么问题,关于电脑利弊的作文
  3. 关闭oracle服务 linux,Linux下启动和关闭Oracle服务与数据库
  4. 看到了一个 蒙特卡洛方法 随机数得出 圆周率的c++ 源码
  5. 抗击海冰 地理信息系统来帮忙
  6. 轻量NuGet服务—BaGet
  7. IntelliJ IDEA for Mac在MacOS模式下的版本控制/本地历史记录快捷键(VCS and Local History Shortcut)
  8. iframe缓存无法清空_详解Http缓存机制
  9. ABAPDEMO批量更改BOM组件_SAP刘梦_新浪博客
  10. FreeMarker常见指令的简单介绍—快速入门(二)
  11. WebGoat教程解析——Hijack a Session
  12. Python爬虫必备知识点--整理核心基础
  13. python实例练习(15)搜索关键词自动提交
  14. Http 同步和异步的区别
  15. OC基础 Block
  16. html 停留页面底部,HTML 中使 footer 始终处于页面底部
  17. 面试西装的颜色、款式、质地的搭配
  18. ARP的欺骗原理和攻防
  19. linux v4l2 示例程序,Linux关于Camera使用V4L2
  20. 织梦生成小说html,织梦用栏目分页来做小说站实现教程(支持动态静态)

热门文章

  1. 实战-PHP远程代码执行漏洞
  2. 谢国忠:不得不告诉你一个坏消息
  3. 阿里云王牌架构师一问开发者:我需要一个高并发的架构,我的系统要改造成微服务吗
  4. OpenCV-python利用蒙版进行叠加(含alpha通道)
  5. C#调用GhostScript,O2S.Components转换PDF为图片
  6. MATLAB下载时报错原因
  7. java声明多个同类变量方法
  8. 网络协议(二) Socket
  9. Schema_CN28_XNN0付款/扣除和转账净额
  10. Part III.S1. 基于离差最大化的直觉模糊多属性决策方法