标签:mamicode concat string tco == bool alt 预处理 load
自己哼哧哼哧做了好久,两个多小时,终于完成了。。。
public boolean isMatch(String s, String p) { //对p进行预处理 int j = 0; while (j+1<p.length()){ if(p.charAt(j) == ‘*‘ && p.charAt(j+1) == ‘*‘){ p = p.substring(0,j+1).concat(p.substring(j+2)); }else{ j++; } } return isMatched(s,p); } private boolean isMatched(String s, String p) { if(!p.contains("*") && !p.contains("?")){ return p.equals(s); } if(s.length() == 0){ if(p.length() == 1){ return p.equals("*"); }else if(p.charAt(0) == ‘*‘){ return isMatched(s,p.substring(1)); }else{ return false; } } int i = 0,j = 0; while(i<s.length() && j<p.length()){ if(s.charAt(i) == p.charAt(j) || p.charAt(j) == ‘?‘){ i++; j++; }else if(p.charAt(j) == ‘*‘){ if(p.substring(j+1).contains("*")) { if(j+1<p.length()) { j++; }else{ return true; } int k = j; while (j < p.length() && p.charAt(j) != ‘*‘ && p.charAt(j) != ‘?‘) { j++; } if(k == j){ return isMatched(s.substring(i),p.substring(j)) || isMatched(s.substring(i+1),p.substring(j)); } if (s.substring(i).contains(p.substring(k, j))) { int t = s.substring(i).indexOf(p.substring(k, j))+i; return isMatched(s.substring(t + j - k), p.substring(j)); }else{ return false; } }else{ return isMatched(s.substring(i+1),p.substring(j)) || isMatched(s.substring(i+1),p.substring(j+1)) || isMatched(s.substring(i),p.substring(j+1)); } }else if(s.charAt(i) != p.charAt(j)){ return false; } } if(i == s.length()) { while (j < p.length()) { if (p.charAt(j) == ‘*‘) { j++; } else { return false; } } } return i == s.length() && j == p.length(); }
看了别人的答案,尚且需要好好领悟
public boolean isMatch(String s, String p) { int iStar = -1, jStar = -1, m = s.length(), n = p.length(), i = 0, j = 0; while (i < m) { if (j < n && (s.charAt(i) == p.charAt(j) || p.charAt(j) == ‘?‘)) { i++; j++; } else if (j < n && p.charAt(j) == ‘*‘) { iStar = i; jStar = j; j++; } else if (iStar >= 0) { i = ++iStar; j = jStar + 1; } else { return false; } } while (j < n && p.charAt(j) == ‘*‘) j++; return j == n; }
——2020.7.5
标签:mamicode concat string tco == bool alt 预处理 load
原文地址:https://www.cnblogs.com/taoyuxin/p/13246878.html