mirror of
https://gitlab.com/mfocko/LeetCode.git
synced 2024-11-09 15:59:06 +01:00
problems: add daily problems
Signed-off-by: Matej Focko <mfocko@redhat.com>
This commit is contained in:
parent
96c6e8d66d
commit
afd4b06f50
2 changed files with 76 additions and 0 deletions
27
problems/linked-list-cycle-ii.rb
Normal file
27
problems/linked-list-cycle-ii.rb
Normal file
|
@ -0,0 +1,27 @@
|
|||
# Definition for singly-linked list.
|
||||
# class ListNode
|
||||
# attr_accessor :val, :next
|
||||
# def initialize(val)
|
||||
# @val = val
|
||||
# @next = nil
|
||||
# end
|
||||
# end
|
||||
|
||||
# @param {ListNode} head
|
||||
# @return {ListNode}
|
||||
|
||||
require 'set'
|
||||
|
||||
def detectCycle(head)
|
||||
def detectCycleRec(node, seen)
|
||||
if node == nil then
|
||||
return node
|
||||
elsif seen.add?(node) == nil then
|
||||
return node
|
||||
end
|
||||
|
||||
return detectCycleRec(node.next, seen)
|
||||
end
|
||||
|
||||
detectCycleRec(head, Set.new)
|
||||
end
|
49
problems/word-pattern.rb
Normal file
49
problems/word-pattern.rb
Normal file
|
@ -0,0 +1,49 @@
|
|||
# @param {String} pattern
|
||||
# @param {String} s
|
||||
# @return {Boolean}
|
||||
def word_pattern(pattern, s)
|
||||
words = s.split
|
||||
|
||||
expected_words = Hash.new
|
||||
expected_patterns = Hash.new
|
||||
|
||||
pattern.chars.zip(words).each { |pat, word|
|
||||
expected_word = expected_words[pat]
|
||||
expected_pattern = expected_patterns[word]
|
||||
|
||||
if expected_pattern == nil && expected_word == nil then
|
||||
expected_patterns[word] = pat
|
||||
expected_words[pat] = word
|
||||
elsif word != expected_word || pat != expected_pattern then
|
||||
return false
|
||||
end
|
||||
}
|
||||
|
||||
return pattern.size == words.size
|
||||
end
|
||||
|
||||
RSpec.describe "word_pattern" do
|
||||
it "finds pattern" do
|
||||
expect(word_pattern("abba", "dog cat cat dog")).to be true
|
||||
end
|
||||
|
||||
it "finds one odd word" do
|
||||
expect(word_pattern("abba", "dog cat cat fish")).to be false
|
||||
end
|
||||
|
||||
it "finds that are not the same words" do
|
||||
expect(word_pattern("aaaa", "dog cat cat dog")).to be false
|
||||
end
|
||||
|
||||
it "handles bijection correctly" do
|
||||
expect(word_pattern("abba", "dog dog dog dog")).to be false
|
||||
end
|
||||
|
||||
it "handles correctly different length of input" do
|
||||
expect(word_pattern("aaa", "aa aa aa aa")).to be false
|
||||
end
|
||||
|
||||
it "handles correctly different length of pattern" do
|
||||
expect(word_pattern("aaaaa", "aa aa aa aa")).to be false
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue