因为* match any length of string. isMatch("aab", "c*a*b") → false: "aab" 里没有'c',所以不可能match; isMatch("mississippi", "m*si*"): 第一个* match "issis", 第二个* match "ppi ". 谁有greedy的solution可以参考下吗?
问过1337哥,他说最大数据是32768*32768,肯定会MLE。 我有个优化的版本,但最后一个test case还是TLE。十分想看谁有能AC的代码! public boolean isMatch(String s, String p) { if (s == null || p == null) return false; if (s.isEmpty() && p.isEmpty()) { //Both are empty string -> true return true; } else if (s.isEmpty()) { // If s is empty, p must not contain any character other than '*' for (int i = 0; i < p.length(); i++) { if (p.charAt(i) != '*') return false; } return true; } else if (p.isEmpty()) { // If p is empty, return false return false; }
char[] pArr = p.toCharArray(); char[] sArr = s.toCharArray(); // handles test cases like s = "c", p = "*?*?" int leadingStars = -1; while (++leadingStars < pArr.length && pArr[leadingStars] == '*') {} leadingStars--;
【在 f*******t 的大作中提到】 : 问过1337哥,他说最大数据是32768*32768,肯定会MLE。 : 我有个优化的版本,但最后一个test case还是TLE。十分想看谁有能AC的代码! : public boolean isMatch(String s, String p) { : if (s == null || p == null) : return false; : if (s.isEmpty() && p.isEmpty()) { //Both are empty string -> true : return true; : } else if (s.isEmpty()) { // If s is empty, p must not contain : any character other than '*' : for (int i = 0; i < p.length(); i++) {
【在 f*******t 的大作中提到】 : 问过1337哥,他说最大数据是32768*32768,肯定会MLE。 : 我有个优化的版本,但最后一个test case还是TLE。十分想看谁有能AC的代码! : public boolean isMatch(String s, String p) { : if (s == null || p == null) : return false; : if (s.isEmpty() && p.isEmpty()) { //Both are empty string -> true : return true; : } else if (s.isEmpty()) { // If s is empty, p must not contain : any character other than '*' : for (int i = 0; i < p.length(); i++) {