含有通配符*的字符匹配(C语言)
含有通配符的字符匹配,采用贪心算法
//1 -> true
//0 -> false
int IsMatch(const char* reg, const char *str) {
int r_len = (int)strlen(reg);
int r_p = 0;
int r_p_last = -1;
int s_len = (int)strlen(str);
int s_p = 0;
int s_p_last = -1; while (s_p < s_len) {
if (r_p < r_len && (*(str + s_p) == *(reg + r_p))) {
r_p++;
s_p++;
}
else if (r_p < r_len && (*(reg + r_p) == '*')) {
r_p_last = r_p;
r_p++;
s_p_last = s_p;
}
else if (r_p_last > -1) {
r_p = r_p_last + 1;
s_p_last++;
s_p = s_p_last;
}
else {
return 0;//false
}
}
while (r_p < r_len && (*(reg + r_p) == '*')) {
r_p++;
}
if (r_p == r_len) {
return 1;//true
}
return 0;//false
}
如果要匹配?的话,添加
*(str + s_p) =='?'
就行了
if (r_p < r_len && (*(str + s_p) == *(reg + r_p))) {
if (r_p < r_len && (*(str + s_p) == *(reg + r_p)||*(str + s_p) =='?')) {
含有通配符*的字符匹配(C语言)的更多相关文章
- (转)MySQL数据表中带LIKE的字符匹配查询
MySQL数据表中带LIKE的字符匹配查询 2014年07月15日09:56 百科369 MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的 ...
- COJN 0558 800600带通配符的字符串匹配
800600带通配符的字符串匹配 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 通配符是一类键盘字符,当我们不知道真正字符或者 ...
- oralce模糊查询之含有通配符
oracle中通配符有 '_'和'%'当like '_ww%'时,会把'_'和'%'当作通配符使用导致查不出含有'_'和'%'的数据.这时用到转译字符 like '\_ww\%' escape '\ ...
- 【转载】Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解
Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解 1清风揽月10人评论5006人阅读2017-06-21 15:48:43 博文说明[前言]: 本文 ...
- 【编程题目】有 n 个长为 m+1 的字符串,如果某个字符串的最后 m 个字符与某个字符串的前 m 个字符匹配...
37.(字符串)有 n 个长为 m+1 的字符串,如果某个字符串的最后 m 个字符与某个字符串的前 m 个字符匹配,则两个字符串可以联接,问这 n 个字符串最多可以连成一个多长的字符串,如果出现循环, ...
- JavaScript正则表达式模式匹配(1)——基本字符匹配
var pattern=/g..gle/; //点符号表示匹配除了换行符外的任意字符 var str='g78gle'; alert(pattern.test(str)); var pattern=/ ...
- Android——检测TXT文件中是否含有双字节字符
在读取双字节字符时,主要涉及到编码的选取: public static boolean isRightfulTXT(File f) { // TODO Auto-generated method st ...
- 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在ACSII码范围内. 输出描述: 输出范围在( ...
- leetcode 44 字符匹配
题意:s是空串或包含a-z字母: p为包含a-z字母或?或 * (其中*可以匹配任意字符串包括空串,?可以匹配任意字符). 思路: 1)特殊情况:当s为空串时,p为连续 * 时,则连续 * 的位置都为 ...
随机推荐
- sublime text3安装配置c++环境(windows+ubuntu)
1.下载sublime text3 官网地址:http://www.sublimetext.com/3 ubuntu直接在Ubuntu Software中搜索sublime安装 2.配置环境变量(wi ...
- php,c# hamsha1
#!/usr/bin/php <?php print strtoupper(hash_hmac("sha256", "message", "ke ...
- bzoj 4557: [JLoi2016]侦察守卫【树形dp】
设f[u][i]为u点向下覆盖至少i层并且处理完u的子树的最小代价,f[u][i]为u点向上覆盖至少i层并且处理完u的子树的最小代价 转移的话显然f[u][i]+=f[v][i-1],但是f[u][0 ...
- C# 中使用Image.FromFile(string path)后,提示该文件正在被另一进程使用XXX的问题
C# 中使用Image.FromFile(string path)后,提示该文件正在被另一进程使用XXX的问题 C# 中使用Image.FromFile(string path)后,提示该文件正在被另 ...
- vs2015未能正确加载“ProviderPackage”包
出现以下错误的解决方案 ---------------------------Microsoft Visual Studio---------------------------未能正确加载“Prov ...
- decltype使用
#include<thread> #include<array> #include<iostream> #include<windows.h> #inc ...
- Backbone学习记录(7)
事件委托 <form> <input type="text" class="txt"> <input type="but ...
- python_函数进阶(5)
第1章 函数有用信息1.1 login.__doc__1.2 login.__name__第2章 装饰器的进阶2.1 带参数的装饰器2.2 多个装饰器装饰一个函数2.3 开放封闭原则 第3章 可迭代对 ...
- DataTable数据导入DataBase
EXcel---->DataTable--->DataBase /// <summary> /// Excel数据-->DataTable导入DataBase /// & ...
- VB.NET入门 ANDALSO 和OrElse 之于 AND,OR
Module Module1 Sub Main() Dim x As Integer = 8, y As Integer = 5, z As Integer = 3 Console.WriteLine ...