题目描述:
从字符串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. 哈哈,咱们团队早就不用try-catch-finally关闭资源了!
  2. js判断数组中重复元素并找出_面试中常遇见的数组去重
  3. JAVA 线程Join
  4. 第七届杭州云栖大会召开 阿里云在人工智能领域发力
  5. Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt)...
  6. Linux手动启动、停止多个服务用的shell脚本
  7. java JSONObject
  8. java中super关键字_java中super关键字有什么用法
  9. ThinkPHP 的URL重写时遇到No input file specified的解决方法
  10. TurtleCoin节点搭建
  11. 基于JAVA+SpringMVC+Mybatis+MYSQL的记账管理系统
  12. SVN:retrieval of mergeinfo unsupported by
  13. EXCEL集成工具箱
  14. 极路由b70官方固件
  15. 机器人手眼标定Ax=xB(eye to hand和eye in hand)及平面九点法标定
  16. Unity 面试题汇总(五)性能优化知识点相关
  17. typora使用smms图床
  18. java设备imei号_java 怎么计算IMEI号码正确性
  19. SQL查询中的日期比较
  20. 内网沟通软件都有哪些?

热门文章

  1. 字节、字、bit、byte到底咋回事
  2. 小舟从此逝,江海寄馀生。
  3. 最好的IDEA debug长文?看完我佛了
  4. 让欺诈风险无处遁形的计算机视觉
  5. localStorage存储bool值,读取之后变字符串类型
  6. iFixit是被破拆解Galaxy Fold?Galaxy Fold的问题点
  7. iOS 自动布局 Autolayout 报错:Unable to simultaneously satisfy constraints.
  8. 什么是云手机?有免费的云手机吗?
  9. java dump文件分析
  10. 射频与麦克斯韦方程组