diff options
| author | mo khan <mo.khan@gmail.com> | 2020-08-23 13:53:41 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-08-23 13:53:41 -0600 |
| commit | 0ed0c36efe2bb83b7a2b399c1881201730a8e1ec (patch) | |
| tree | d0f55266cc2f48d12f2e8a2554cbadcfd2a97dab | |
| parent | 38adf67ee3d5dbdce4f875fb4ea2f3b543806ecb (diff) | |
Try again
| -rw-r--r-- | misc/subsequence/main.rb | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/misc/subsequence/main.rb b/misc/subsequence/main.rb index e8e2341..0206793 100644 --- a/misc/subsequence/main.rb +++ b/misc/subsequence/main.rb @@ -274,7 +274,35 @@ class Solution end end end + + def self.run(sequence, pattern, index = 0) + return index if pattern.empty? + return index if sequence.empty? + + atom = pattern[0] + if atom != '*' + if sequence[0] == atom + run(sequence[1..-1], pattern[1..-1], index) + else + run(sequence[1..-1], pattern, index + 1) + end + else + if sequence[1] == pattern[1] + run(sequence[1..-1], pattern[1..-1], index) + else + run(sequence[1..-1], pattern, index) + end + end + end end +=begin + x +|a|b|c|d|e|f| + + y +|a|*|d|*|f| + +=end assert_equal 0, Solution.run('abcdef', 'a*d*f') assert_equal 0, Solution.run('abcdefg', 'a*d*f') |
