注意:String类中已提供了字符串匹配的API,现模拟该API实现



目录

  • 子串查询函数
  • 查询源串中的所有子串
    • 跳过整个子串
    • 跳过单个字符


一、子串查询函数

/*** 自定义子串查询*        String有自己的API:str.indexOf("xxx",0)* @param a 源串* @param b 目的串* @param index 从该参数开始查询* @return*/
private static int findSubString1(String a, String b, int index) {String tempStr = a.substring(index);int len1 = tempStr.length();int len2 = b.length();char[] source = tempStr.toCharArray();char[] target = b.toCharArray();if (len2 > len1){return -1;}int i = 0, j = 0, k = 0;while (k < len1 && j < len2) {if(source[k]!=target[j]){k++;continue;}i = k;while(j < len2){i++;j++;if(j==len2){return k+index;}if(source[i]==target[j]){continue;}else{j = 0;k++;break;}}}return -1;
}

二、查询所有子串

/*** 查询所有子串* @param source* @param target* @return*/
private static int findAllSubString(String source, String target){int pos = 0;int total = 0;// source.indexOf(target,pos)while((pos=findSubString1(source,target,pos))>0){System.out.println(pos);// pos++pos += target.length();}return total;
}

No7. 字符串匹配相关推荐

  1. CCF - 201409-3 - 字符串匹配

    问题描述 试题编号: 201409-3 试题名称: 字符串匹配 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你 ...

  2. 字符串匹配shiftand算法

    令人惊叹的Shift-And/Shift-Or 写在前面:Shift-And/Shift-Or是如此令人惊叹的算法,在KMP基础上开始一段神奇之旅. 目的:以Shift-And算法为载体,试图在减少思 ...

  3. 字符串匹配数据结构 --Trie树 高效实现搜索词提示 / IDE自动补全

    文章目录 1. 算法背景 2. Trie 树实现原理 2.1 Trie 树的构建 2.2 Trie树的查找 2.3 Trie树的遍历 2.4 Trie树的时间/空间复杂度 2.5 Trie 树 Vs ...

  4. 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FFT)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FF ...

  5. Rabin-Karp ( 字符串匹配 )详解

    字符串匹配,例从 字符串S 中( 长度为 n ),找到 字符串T ( 长度为 m ) 经典思路:遍历 字符串 S,对于每个都为起点,匹配一次,则 O( n m )的复杂度 但是这样我们就对 字符 重复 ...

  6. 字符串匹配KMP算法

    字符串匹配KMP KMP过程其实就是去找下一个更好的状态的过程,省略去了中间穷举的无用过程,直接跳到下一个更好的状态,通过模式串本身的信息,站在模式串的角度来考虑问题 取长的一对 若想让模式串直接从S ...

  7. c int转字符串_【C++实现python字符串函数库】字符串匹配函数startswith与endswith

    [C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...

  8. R语言stringr包str_count函数计算字符串匹配个数实战

    R语言stringr包str_count函数计算字符串匹配个数实战 目录 R语言stringr包str_count函数计算字符串匹配个数实战 #导入stringr包 #仿真数据

  9. 三十五、字符串匹配问题--KMP算法

    一.暴力匹配算法实现字符串匹配 如果用暴力匹配的思路,并假设现在 str1 匹配到 i 位置,子串 str2 匹配到 j 位置,则有: 如果当前字符匹配成功(即 str1[i] == str2[j]) ...

最新文章

  1. 负载均衡技术中的真集群和伪集群
  2. 【C/C++】链表的理解与使用
  3. typedef与#define宏区别
  4. java每日小算法(22)
  5. 深入理解Spark 2.1 Core (十三):sparkEnv类源码分析
  6. python设置格式模板
  7. LeetCode 2020 力扣杯全国秋季编程大赛(656/3244,前20.2%)
  8. solidity智能合约[4]-pure与view剖析
  9. 如何用Appium连接并操作手机App
  10. 回想那天让我虎躯一震的bug:Mybatis Ognl引起的异常
  11. Snipaste截图贴图软件安装包下载免费的超级强大截图软件
  12. SpringBoot的个人博客管理系统(毕业论文范文)
  13. Catching Cheaters
  14. Oracle+SQL优化第二弹
  15. Methyltetrazine-PEG8-DBCO,甲基四嗪--八聚乙二醇-二苯并环辛炔
  16. 计算机原理学习(1)
  17. Linux内核LED模块分析(二)
  18. 金色丝线将瞬间一分为二 树状数组的使用
  19. 区间子集最大/最小异或和问题(线性基,树上差分)
  20. 未来游戏制作人:把热爱变成事业,将执着化作梦想

热门文章

  1. handler相关学习(三)handler必背
  2. Codeforces Round 649 (Rated for Div. 2)D. Ehab s Last Corollary详细题解(图论+简单环)
  3. Linux 下nm 、objdump 和 readelf 比较
  4. Mac系统随笔 | (1)Mac系统中的PageUp、PageDown、Home和End
  5. 父类指针指向子类对象的问题、父类对象和子类对象之间的问题
  6. 王桂林 C++基础与提高 练习题——格式时钟输出(实时的,精确到秒)
  7. 用Python去除PDF水印尝试
  8. CG-多边形扫描线填充算法详解
  9. 数据结构(十二)二叉树—— 二叉树的逆推构建
  10. 【Jmeter】jmeter的安装与启动(win10)