summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-08-23 13:53:41 -0600
committermo khan <mo.khan@gmail.com>2020-08-23 13:53:41 -0600
commit0ed0c36efe2bb83b7a2b399c1881201730a8e1ec (patch)
treed0f55266cc2f48d12f2e8a2554cbadcfd2a97dab
parent38adf67ee3d5dbdce4f875fb4ea2f3b543806ecb (diff)
Try again
-rw-r--r--misc/subsequence/main.rb28
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')