Commit 7f7f9ea

mo khan <mo.khan@gmail.com>
2020-08-13 02:00:09
Use a recursive solution
1 parent 4f53805
Changed files (1)
misc
subsequence
misc/subsequence/main.rb
@@ -253,6 +253,27 @@ class Solution
 
     result
   end
+
+  def self.run(sequence, pattern, index = 0)
+    puts [sequence, pattern, index].inspect if ENV['DEBUG']
+    return index if pattern.nil? || pattern.empty?
+    return index if sequence.nil? || sequence.empty?
+
+    case (atom = pattern[0])
+    when '*'
+      if sequence[1] == pattern[1]
+        run(sequence[1..-1], pattern[1..-1], index)
+      else
+        run(sequence[1..-1], pattern, index)
+      end
+    else
+      if sequence[0] == atom
+        run(sequence[1..-1], pattern[1..-1], index)
+      else
+        run(sequence[1..-1], pattern, index + 1)
+      end
+    end
+  end
 end
 
 assert_equal 0, Solution.run('abcdef', 'a*d*f')