java 递归实现通配符匹配
2014-01-03 10:14
169 查看
/**
*
* 字符串中存在星号(表示多个字符)匹配
* @param pattern 包含星号的字符串
* @param str 要匹配的字符串
* @return
*/
public static boolean wildcardStarMatch(String pattern, String str) {
int strLength = str.length();
int strIndex = 0;
char ch;
for (int patternIndex = 0,patternLength = pattern.length(); patternIndex < patternLength; patternIndex++) {
ch = pattern.charAt(patternIndex);
if (ch == ‘*’) {
// 通配符星号*表示可以匹配任意多个字符
while (strIndex < strLength) {
if (wildcardStarMatch(pattern.substring(patternIndex + 1), str.substring(strIndex))) {
return true;
}
strIndex++;
}
} else {
if ((strIndex >= strLength) || (ch != str.charAt(strIndex))) {
return false;
}
strIndex++;
}
}
return (strIndex == strLength);
}
*
* 字符串中存在星号(表示多个字符)匹配
* @param pattern 包含星号的字符串
* @param str 要匹配的字符串
* @return
*/
public static boolean wildcardStarMatch(String pattern, String str) {
int strLength = str.length();
int strIndex = 0;
char ch;
for (int patternIndex = 0,patternLength = pattern.length(); patternIndex < patternLength; patternIndex++) {
ch = pattern.charAt(patternIndex);
if (ch == ‘*’) {
// 通配符星号*表示可以匹配任意多个字符
while (strIndex < strLength) {
if (wildcardStarMatch(pattern.substring(patternIndex + 1), str.substring(strIndex))) {
return true;
}
strIndex++;
}
} else {
if ((strIndex >= strLength) || (ch != str.charAt(strIndex))) {
return false;
}
strIndex++;
}
}
return (strIndex == strLength);
}
相关文章推荐
- Java 用正则表达式来实现 通配符匹配 (支持*, ?)
- windows下通配符匹配的Java实现
- java应用于二叉树层次输出和之字形输出的非递归实现
- 递归求10的阶乘(Java实现)
- java递归实现多级文件的复制
- java中实现递归计算二进制表示中1的个数
- java递归实现复制一个文件夹下所有文件的功能
- JAVA 递归与非递归斐波那契数列的实现
- Java实现分叉查找--递归方法
- 二分查找 java递归和非递归实现
- 数据结构(java语言描述)递归实现——汉诺塔问题
- 背包问题回溯法的递归实现(java)
- 图的匹配问题与最大流问题(三)——最大流问题Ford-Fulkerson方法Java实现
- 面试题—Java递归实现约瑟夫环
- Java递归实现文件删除
- java实现正向最大匹配分词
- 括号匹配算法的一种正确实现(java)
- Java二叉树搜索树,基本操作及四种遍历非递归实现
- 递归思想实现大数问题(打印1到n位最大整数)(JAVA代码)
- Java实现的双向匹配分词算法示例