关注
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
相关推荐
牛客热帖
更多
正在热议
更多
# mt对你说过最有启发的一句话 #
2692次浏览 59人参与
# 考研失败就一定是坏事吗? #
159062次浏览 1130人参与
# 被上班搭子“传染”了哪些习惯 #
1329次浏览 48人参与
# 今年秋招你收到了多少封邮件? #
3052次浏览 73人参与
# 工作后,你落下了哪些病根 #
3428次浏览 94人参与
# 秋招特别不鸣谢 #
2366次浏览 41人参与
# 选实习,你更看重哪方面? #
2587次浏览 55人参与
# 工作后明白的那些道理 #
35079次浏览 467人参与
# 巨人网络求职进展汇总 #
181448次浏览 1214人参与
# 摸鱼被leader发现了怎么办 #
76574次浏览 445人参与
# 什么是优秀的实习经历 #
1042次浏览 46人参与
# 非技术2024笔面经 #
446355次浏览 4909人参与
# 你见过最离谱的招聘要求是什么? #
246296次浏览 1696人参与
# 秋招感动瞬间 #
109689次浏览 497人参与
# 工作中遇到的歹人 #
5178次浏览 111人参与
# 选完offer后,你后悔学机械吗? #
49258次浏览 270人参与
# 当发现同事想辞职 #
12367次浏览 39人参与
# 分享一个让你热爱工作的瞬间 #
53288次浏览 466人参与
# 第一份工作应该选择高薪还是大平台 #
177381次浏览 966人参与
# 上班到公司第一件事做什么? #
115172次浏览 806人参与
查看1道真题和解析
海康威视公司福利 1409人发布