loading...

LeetCode in Ruby: 771 Jewels and Stones

algobot76 profile image Kaitian Xie Updated on ・1 min read

1 Line

This approach is based on Ruby’s String#count method. It takes the string j as the set of characters to count in the string s. This is the fastest and the simplest solution.

Time complexity: O(j.length+ s.length)

Extra memory: O(1)

Hash

def num_jewels_in_stones(j, s)
  stones = Hash.new 0
  s.each_char do |char|
    stones[char] += 1
  end

  sum = 0
  j.each_char do |char|
    sum += stones[char]
  end

  return sum
end

First, we iterate through the string s and create a hash called stones that uses the characters in s as keys and their occurrence as values. Then we go through each character of j and sum up their occurrences.

Time complexity: O(j.length+ s.length)

Extra memory: O(s.length)

Discussion

markdown guide
 

Awesome solution. This is my favourite problem on LeetCode. It’s a simple introduction to hashmaps and why they’re amazing 👏