算法目标,对于 字符串 abcd1dd2deeedd9 能偶匹配到字符串 abc*dd?;*代表任意个数的字符串,?代表一个字符.
分两步走,
第一步实现含?而不含*的 字符串匹配,如对dd?的匹配
第二步,实现含有* 的字符串的匹配,如abc* dd?,主要思路是用* split 字符串,分为两个有效的串,abc, dd?
然后使用步骤一种的方法来查看匹配到的index.
/**
* 找出含?的字符串
* @return
*/
public int checkSubPattern(String src,int begin,String pat){
boolean isFound=true;
if(src.length()-begin < pat.length()){return -1;}
for(int i=begin;i<src.length()-pat.length()+1;i++){
for(int j=0;j<pat.length();j++){
if(pat.charAt(j)!='?' && src.charAt(i+j)!=pat.charAt(j)){
isFound =false;
break;
}
isFound = true;
}
if(isFound){return i;}
}
return -1;
}
public boolean checkStar(String src,String pat){
String[] sub_p = pat.split("\\*");
int begin =0;
for(int i=0;i< sub_p.length;i++){
begin = checkSubPattern(src,begin,sub_p[i]);
System.out.println(begin);
if(begin==-1){return false;}
if(i==0 && pat.charAt(i)!='*' &&begin!=0){return false;}
if((i==sub_p.length-1) && pat.charAt(i)!='*' &&begin!=(src.length()- sub_p[i].length())){return false;}
}
return true;
}
相关推荐
实现带通配符的字符串匹配算法有多种方法,包括但不限于: 1. **朴素匹配算法**:最直观的实现,逐字符比较,遇到通配符时进行特殊处理。这种方法效率较低,对大规模数据不适用。 2. **KMP算法**:适用于精确匹配,...
通过理解通配符字符串匹配的原理,并结合Java编程,我们可以创建高效的解决方案来处理这类问题。无论是动态规划还是回溯搜索,都需要对字符串处理和算法设计有扎实的理解。实际开发中,可以根据具体需求和性能要求...
3. Rabin-Karp算法:Rabin-Karp算法利用哈希函数将字符串匹配问题转化为整数比较,通过滚动哈希值来减少比较次数。但这种方法对哈希冲突的处理要求较高。 4. BMH(Boyer-Moore-Horspool)算法:是Boyer-Moore算法的...
使用`Pattern`和`Matcher`类进行字符串匹配。首先,通过`Pattern.compile()`方法编译正则表达式,然后创建`Matcher`对象并调用`matches()`或`find()`方法进行匹配。 3. **贪婪匹配与非贪婪匹配的区别?** 贪婪...
本文将聚焦于一种特殊类型的字符串匹配,即通配符匹配。通配符是编程和计算机系统中用来代表任意字符或字符序列的特殊符号,通常用于模糊查找或模式匹配。在Java中,我们可以使用特定的类和方法来实现这种功能。 ...
如果我们想要模糊查询带有通配符的字符串,如“60%”,“user_name”,就需要对通配符进行转义,有两种方式。如下: 1、反斜杠是转义符,通过反斜杠来转义%,使其不再是通配符。这里第一个%是通配符,第二个%不是...
* *:匹配零个或多个字符串,如“cn/*/config.xml”将匹配“cn/javass/config.xml”,但不匹配匹配“cn/config.xml”。 * :匹配路径中的零个或多个目录,如“cn//config.xml”将匹配“cn/config.xml”,也匹配...
这个名为"oracle遍历数据库查找字符串.jar"的工具可能实现了以下功能: 1. **连接配置**:用户可以输入数据库的URL、用户名、密码和实例信息,以便与Oracle数据库建立连接。 2. **字符串输入**:用户输入要查找的...
Java提供了丰富的字符串处理和数据结构库,如`StringTokenizer`、`ArrayList`和`HashMap`,便于实现这些功能。 搜索引擎的架构通常包括爬虫、预处理、索引和查询四个部分。爬虫负责从互联网上抓取网页;预处理阶段...
Python、Java和Perl等编程语言都有强大的文件操作和字符串匹配库。例如,Python的`re`模块支持正则表达式,可以方便地遍历文件夹并查找字符串。下面是一个简单的Python示例: ```python import os import re def ...
1. **字符串匹配算法**:在Android中,常见的字符串匹配算法有Levenshtein距离(编辑距离)、Jaccard相似度、BM25等。这些算法能计算字符串之间的相似度,帮助找出与查询关键词最接近的匹配项。例如,Levenshtein...
根据提供的文件信息,标题为“java模糊查询方法”,描述中提到了“为了实现子字符串匹配查询”。虽然实际代码示例与模糊查询不直接相关,但我们可以基于这些信息生成相关的Java模糊查询知识点。 ### Java模糊查询...
Python的`difflib`库可以计算字符串差异,`fnmatch`模块支持通配符匹配。 6. **高亮显示**:在找到查询结果后,为了突出显示,可以使用特殊字符或者CSS样式。在文本编辑器或网页中,可以设置查询到的字符串的背景色...
3. **模糊查询**:在数据库查询中,可以使用LIKE操作符结合通配符(如%)来实现模糊匹配。拆分后的关键词可以与数据库中的字段进行逐个比较。 4. **性能优化**:对于大量数据的查询,可能需要考虑性能优化,例如...
让 sWild 是一个通配符字符串,而 sTame 是一个非通配符字符串。 使用方法是: boolean match = Wildcard.matchFound(String sWild, String sTame); 返回值指示两个字符串是否匹配。 默认情况下,此方法区分大小...
ArrayString.java 字符串数组 assignTwoDime.java 为二维数组赋值 getMaxElem.java 获取数组中的最大元素 incCapicity.java 演示StingBuffer的容量增长 SortDemo.java 排序示例 travelTwoDime.java 遍历二维...
程序填空题的要求是将一个字符串匹配函数的五个空白填写完整,该函数需要实现带有$和*两种通配符的字符串匹配功能。 函数的参数和返回值的说明如下: * 参数:@pRule,以'\0'结束的字符串,表示规则;@pStr,以'\0...
在这个示例中,我们首先创建了一个`Stack<String>`实例,并向其中添加了三个字符串。接着,创建了一个`Stack<Number>`实例,并通过`pushAll`方法添加了整数。最后,通过`popAll`方法将元素移除并添加到了一个`Object...
此外,正则表达式(Regular Expression,简称regex)是另一种强大的字符串搜索工具,能匹配复杂的模式,如邮箱地址、电话号码等。 对于大型项目或复杂代码库,简单的字符串搜索可能不足以满足需求。这时,我们可以...
标题中的“通配符比较”指的是在编程中使用特定的字符模式(通配符)来匹配和查找符合特定规则的字符串。在IT行业中,通配符通常用于文件搜索、命令行参数、正则表达式等领域,帮助用户或程序快速定位到符合规则的...