关注
public static int resolve2(String str, String reg) {
char[] c1 = str.toCharArray();
char[] c2 = reg.toCharArray();
int i,j;
for (i = 0,j = 0; i < c1.length && j < c2.length; ) {
if (c1[i] == c2[j]) {
i++;
j++;
} else {
if (c2[j] == '?') {
i++;
j++;
} else if (c2[j] == '*') {
i++;
j++;
for (; i < c1.length && j < c2.length; ) {
if (c1[i] == c2[j] && (i + 1 >= c1.length || c1[i + 1] != c2[j])) {//abcaabbcc a?????*c
i++;
j++;
break;
} else {
i++;
}
}
} else {
i++;
break;
}
}
}
//aabbccdd a*b*c??*
//当匹配到最后一个dd与??后,退出外层for循环,但是匹配字符串还有一个星号没有匹配完,所以返回0 是不对的
//abcdddd abc*d?
//也是一样,匹配字符串最后一个问号没有匹配完,返回0 是不对的
//abcdddd abc*d*d或者abc*d?d 返回0 是不对的
//abcdddea ab*d*ea 返回0 是不对的
if ((i == c1.length) && (j == c2.length)) {
return 1;
} else if (i == c1.length) {
int flag=1;
for (int k = j; k < c2.length; k++) {
if (c2[k] != '*' && c2[k] != '?' ) {
flag = (c2[k] == c1[c1.length - (c2.length - k)]) && flag == 1 ? 1 : 0;//当匹配到不是*或者?时,需要c1向前验证,若flag==1且验证正确,才继续flag=1
}
}
return flag;
}
return 0;
}
查看原帖
点赞 1
相关推荐
2025-12-23 23:49
门头沟学院 前端工程师 点赞 评论 收藏
分享
李橙子:你这如果想找java方向的,那你的项目就不要写python啊,不然会以为你是主要找python的 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
7386次浏览 105人参与
# 机械人避雷的岗位/公司 #
42185次浏览 280人参与
# 程序员找工作至少要刷多少题? #
13483次浏览 203人参与
# 12306一秒售罄,你抢到回家的票了吗? #
1343次浏览 39人参与
# 我现在比当时_,你想录用我吗 #
6161次浏览 89人参与
# 过年最难忘的一件事 #
23100次浏览 174人参与
# 你最满意的offer薪资是哪家公司? #
69558次浏览 349人参与
# 为了减少AI幻觉,你注入过哪些设定? #
2865次浏览 97人参与
# 牛客AI体验站 #
5053次浏览 153人参与
# AI Coding的使用心得 #
3673次浏览 91人参与
# 找工作的破防时刻 #
253280次浏览 1962人参与
# 刚入职的你踩过哪些坑 #
5566次浏览 113人参与
# 论秋招对个人心气的改变 #
7586次浏览 132人参与
# 一张图晒一下你的AI员工 #
3787次浏览 82人参与
# 关于春招/暑期实习,你想知道哪些信息? #
5623次浏览 98人参与
# 黄金这个事上,你学到了什么 #
1388次浏览 41人参与
# 机械人你知道哪些单休企业 #
85568次浏览 428人参与
# 程序员能干到多少岁? #
7044次浏览 104人参与
# 晒晒你司的新年福利 #
5749次浏览 89人参与
# 关于提前批我想问 #
267666次浏览 2307人参与
查看3道真题和解析