Java經典算法:通配符匹配

實現通配符模式匹配並支持“?” 和“ *”。
Java解決方案
要了解此解決方案,可以使用s =“ aab”和p =“ * ab”。
public boolean isMatch(String s, String p) {
int i = 0;
int j = 0;
int starIndex = -1;
int iIndex = -1;

while (i < s.length()) {
	if (j < p.length() && (p.charAt(j) == '?' || p.charAt(j) == s.charAt(i))) {
		++i;
		++j;
	} else if (j < p.length() && p.charAt(j) == '*') {
		starIndex = j;		
		iIndex = i;
		j++;
	} else if (starIndex != -1) {
		j = starIndex + 1;
		i = iIndex+1;
		iIndex++;
	} else {
		return false;
	}
}

while (j < p.length() && p.charAt(j) == '*') {
	++j;
}

return j == p.length();}

實現通配符模式匹配並支持“?” 和“ *”。
Java解決方案
要了解此解決方案,可以使用s =“ aab”和p =“ * ab”。
public boolean isMatch(String s, String p) {
int i = 0;
int j = 0;
int starIndex = -1;
int iIndex = -1;

while (i < s.length()) {
	if (j < p.length() && (p.charAt(j) == '?' || p.charAt(j) == s.charAt(i))) {
		++i;
		++j;
	} else if (j < p.length() && p.charAt(j) == '*') {
		starIndex = j;		
		iIndex = i;
		j++;
	} else if (starIndex != -1) {
		j = starIndex + 1;
		i = iIndex+1;
		iIndex++;
	} else {
		return false;
	}
}

while (j < p.length() && p.charAt(j) == '*') {
	++j;
}

return j == p.length();}

最後,開發這麼多年我也總結了一套學習Java的資料與面試題,如果你在技術上面想提升自己的話,可以關注我,私信發送領取資料或者在評論區留下自己的聯繫方式,有時間記得幫我點下轉發讓跟多的人看到哦。在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章