We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent bc3c6a2 commit 55bb9f0Copy full SHA for 55bb9f0
src/wildcard_matching.dart
@@ -13,7 +13,26 @@ void main(List<String> args) {
13
}
14
15
bool isMatch(String s, String p) {
16
- final RegExp regExp = RegExp(p.replaceAll('*', '^g\.*').replaceAll('?', '^g\.?'));
17
- print(regExp.stringMatch(s));
18
- return regExp.stringMatch(s) == s;
+ if (p.replaceAll("*", "").length > s.length) return false;
+
+ List<bool> flags = List.generate(s.length + 1, (index) => false);
19
+ flags.first = true;
20
+ for (int i = 1; i < s.length; ++i) {
21
+ flags[i] = false;
22
+ }
23
24
+ for (int i = 1; i <= p.length; ++i) {
25
+ String char = p[i - 1];
26
+ if (char == '*') {
27
+ for (int j = 1; j <= s.length; ++j) {
28
+ flags[j] = flags[j - 1] || flags[j];
29
30
+ } else {
31
+ for (int j = s.length; j >= 1; --j) {
32
+ flags[j] = flags[j - 1] && (char == '?' || char == s[j - 1]);
33
34
35
+ flags[0] = flags[0] && char == '*';
36
37
+ return flags[s.length];
38
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
0 commit comments